⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sudoku.java

📁 一些平时可能用到的工具,比如导出数据,比较数据
💻 JAVA
字号:
package gongju;

import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Vector;

import javax.swing.AbstractAction;
import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.KeyStroke;

/**
 * This code was edited or generated using CloudGarden's Jigloo SWT/Swing GUI
 * Builder, which is free for non-commercial use. If Jigloo is being used
 * commercially (ie, by a corporation, company or business for any purpose
 * whatever) then you should purchase a license for each developer using Jigloo.
 * Please visit www.cloudgarden.com for details. Use of Jigloo implies
 * acceptance of these licensing terms. A COMMERCIAL LICENSE HAS NOT BEEN
 * PURCHASED FOR THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED LEGALLY FOR
 * ANY CORPORATE OR COMMERCIAL PURPOSE.
 */
public class Sudoku extends JFrame {
	private JMenuBar menubar = new JMenuBar();

	private JMenu menu1 = new JMenu("重新开始");// 文件

	private JMenu menu2 = new JMenu("查看结果");// 文件

	private JPanel jPanel1;

	private JTable jTable1;

	private HashMap ht_key = new HashMap();// 存放坐标和值的映射

	private HashMap ht_value = new HashMap();// 存放值和坐标的映射

	private Vector v = new Vector();

	private String haha=new String();

	public Sudoku() {
		// super("九宫游戏");
		init();
		setvalue();
	}

	public void init() {
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		this.setJMenuBar(menubar);
		MenuAction menu1item1 = new MenuAction("重新开始", null, "重新开始", 'N');
		menu1.add(menu1item1);
		MenuAction menu2item1 = new MenuAction("查看结果", null, "查看结果", 'O');
		menu2.add(menu2item1);
		menubar.add(menu1);
		menubar.add(menu2);
		{
			jPanel1 = new JPanel();
			BorderLayout jPanel1Layout = new BorderLayout();
			jPanel1.setLayout(jPanel1Layout);
			getContentPane().add(jPanel1, BorderLayout.CENTER);
			{
				jTable1 = new JTable(9, 9);
				jTable1.setRowHeight(30);
				jTable1.getAutoResizeMode();
				jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
				jPanel1.add(jTable1, BorderLayout.CENTER);
				jTable1.addKeyListener(new KeyAdapter() {
					public void keyReleased(KeyEvent evt) {
						int key = evt.getKeyCode();
						switch (key) {
						case KeyEvent.VK_1:
							break;
						case KeyEvent.VK_2:
							break;
						case KeyEvent.VK_3:
							break;
						case KeyEvent.VK_4:
							break;
						case KeyEvent.VK_5:
							break;
						case KeyEvent.VK_6:
							break;
						case KeyEvent.VK_7:
							break;
						case KeyEvent.VK_8:
							break;
						case KeyEvent.VK_9:
							break;
						default:
							JOptionPane.showMessageDialog(null, "只能输入数字1-9");
							break;
						}
					}
				});
			}
		}
		pack();
		setSize(400, 341);
		setVisible(true);
	}

	public void ab() {
		long start = System.currentTimeMillis();
		// 测试所花时间
		DecimalFormat df = new DecimalFormat("#,##0.###");// 格式化时间
		for (int i = 0; i < v.size(); i++) {
			int temp[] = (int[]) v.get(i);
			int row = temp[0];
			int column = temp[1];
		}
		while (ht_key.size() < 81) {
			setvalue();
		}
		System.out.println("用时"
				+ (df
						.format(Double.valueOf(System.currentTimeMillis()
								- start) / 1000)) + "秒!\n");
	}

	// 00,01,02,03,04,05,06,07,08
	// 10,11,12,13,14,15,16,17,18
	// 20,21,22,23,24,25,26,27,28
	// 30,31,32,33,34,35,36,37,38
	// 40,41,42,43,44,45,46,47,48
	// 50,51,52,53,54,55,56,57,58
	// 60,61,62,63,64,65,66,67,68
	// 70,71,72,73,74,75,76,77,78
	// 80,81,82,83,84,85,86,87,88
	public void setvalue() {
		long start = System.currentTimeMillis();
		// 测试所花时间
		DecimalFormat df = new DecimalFormat("#,##0.###");// 格式化时间
		int a = geta();
		int b = geta();
		for (int i = 0; i < a; i++) {
			for (int j = 0; j < b; j++) {
				settable();
			}
		}
		System.out.println(haha);
		System.out.println("用时"
				+ (df
						.format(Double.valueOf(System.currentTimeMillis()
								- start) / 1000)) + "秒!\n");
	}

	public void settable() {
		int row = geta();
		int column = geta();
		int value = getb();
		boolean check = false;
		for (int i = 0; i < 9; i++) {
			 if (jTable1.getValueAt(row, i) == null
			 || Integer.parseInt(jTable1.getValueAt(row, i).toString()) !=
			 value) {
			 if (jTable1.getValueAt(i, column) == null
			 || Integer.parseInt(jTable1.getValueAt(i, column)
			 .toString()) != value) {
			 check = true;
			 } else {
			 check = false;
			 break;
			 }
			 } else {
			 check = false;
			 break;
			 }
//			if (!haha.contains(row + "" + column + "" + value)) {
//				check = true;
//			} else {
//				check = false;
//				break;
//			}
		}
		if (check) {
			jTable1.setValueAt(value, row, column);
			ht_key.put(row + "" + column, value);
			v.add(new int[] { row, column });
//			haha =haha+row + "" + column + "" + value + " ";
		}
	}

	public int geta() {
		int a = (int) Math.rint(Math.random() * 10);// 行,列0-8
		return a == 9 || a == 10 ? 8 : a;
	}

	public int getb() {
		int b = (int) Math.rint(Math.random() * 10);// 数值1-9
		return b == 0 || b == 10 ? 1 : b;

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new Sudoku();
	}

	/**
	 * 工具按钮设置
	 * 
	 * @author 510922198612304632
	 * 
	 */
	class MenuAction extends AbstractAction {

		/**
		 * @param text
		 * @param icon
		 * @param description
		 * @param accelerator
		 */
		public MenuAction(String text, Icon icon, String description,
				char accelerator) {
			super(text, icon);
			putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(accelerator,
					Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
			putValue(SHORT_DESCRIPTION, description);
		}

		public void actionPerformed(ActionEvent e) {
			String order = getValue(ACCELERATOR_KEY).toString();
			System.out.println(order);
			if (order.endsWith("N")) {
				setvalue();
			}
			if (order.endsWith("O")) {
				ab();
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -