定义了一个package名叫aloha
把下面的代码粘贴了,编译运行就可以了
不用谢我了!
/*
* NineGrid.java
*/
package aloha;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;
/**
*
* @author libai
public class NineGrid extends javax.swing.JFrame implements ActionListener{
/** Creates new form NineGrid */
public NineGrid() {
initComponents();
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension d = tk.getScreenSize();
this.setTitle("Nine Grid");
{
this.arr[i] = i+1;
}
this.arr[11] = -1;
this.arr[idx] = tmp;
this.Buttons[i][j].addActionListener(this);
this.getContentPane().add(this.Buttons[i][j]);
else
this.Buttons[i][j] = new JButton("");
this.Buttons[i][j].setEnabled(false);
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
@SuppressWarnings("unchecked")
// editor-fold defaultstate="collapsed" desc="Generated Code"
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
pack();
}// /editor-fold
* @param args the command line arguments
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NineGrid().setVisible(true);
});
private boolean isSucceed()
boolean flag = true;
if(!this.Buttons[i][j].getText().equals(""))
return false;
return true;
public void actionPerformed(ActionEvent e)
int i = 0,j = 0;
boolean in = false;
if(e.getSource() == this.Buttons[i][j])
in = true;
break;
if(in)
if((i = 0 (j - 1) = 0)(!this.Buttons[i][j - 1].isEnabled()))
String tmp = this.Buttons[i][j].getText();
this.Buttons[i][j].setText(this.Buttons[i][j - 1].getText());
this.Buttons[i][j - 1].setText(tmp);
this.Buttons[i][j - 1].setEnabled(true);
if(this.isSucceed())
JOptionPane.showConfirmDialog(this, "You Win!!!!");
return;
this.Buttons[i][j].setText(this.Buttons[i][j + 1].getText());
this.Buttons[i][j + 1].setText(tmp);
this.Buttons[i][j + 1].setEnabled(true);
if((i - 1 = 0 j = 0)(!this.Buttons[i - 1][j].isEnabled()))
this.Buttons[i][j].setText(this.Buttons[i - 1][j].getText());
this.Buttons[i - 1][j].setText(tmp);
this.Buttons[i - 1][j].setEnabled(true);
this.Buttons[i][j].setText(this.Buttons[i + 1][j].getText());
this.Buttons[i + 1][j].setText(tmp);
this.Buttons[i + 1][j].setEnabled(true);
// Variables declaration - do not modify
// End of variables declaration
JAVA不熟,不过算法都差不多.
等会给你个C/C++的.
我用C++做出来了.
基本思路说下:
先定义类
class JiuGong
public:
int x;
int y;//x,y表示当前正在试验的点
JiuGong *pre;//这是后面堆栈用的
bool check();//这函数进行九宫检查,包括行/列/小九宫的查错
bool finish();//这函数检查是否已经完成
bool find();//这函数用来找到下一个未知点(试验点)位置
再定义一个类 这是个堆栈
class JiuGongStack()
JiuGong *top;
bool push(JiuGong *p);//压
bool pop(JiuGong *p);//弹
推算过程:
先声明一个JiuGong结构,导入初始值.
用成员函数find()找到第一个未知点.
以下循环:
在试验点数字加1
用成员函数finish()检查是否结束
Y- 成功 返回
N- 向下
Y-POP -POP失败 -题目错误 返回
N-向下
用成员函数check()查错
无错-PUSH
错-继续循环
完毕.
import?java.util.ArrayList;
import?java.util.Arrays;
public?class?Test1?{
private?static?ArrayListString?arrangeList?=?new?ArrayListString();?
public?static?void?main(String[]?args)?{
char?list[]?=?str.toCharArray();//将字符串转换为字符数组
genernateData(list,?0,?list.length?-?1);//参数为字符数组和0和字符数组最大下标
for(String?str1?:?arrangeList){
arr[k]=Integer.parseInt(str1.substring(k,k+1));
System.out.println(Arrays.toString(arr));
public?static?void?genernateData(char?list[],?int?k,?int?m)?{
if?(k?m)?{
StringBuffer?sb?=?new?StringBuffer();//创建一个StringBuffer对象sb
for?(int?i?=?0;?i?=?m;?i++)?{
sb.append(list[i]);//循环将字符数组值追加到StringBuffer中
arrangeList.add(sb.toString());
}?else?{
for?(int?i?=?k;?i?=?m;?i++)?{
swapData(list,?k,?i);//将下表为k和i的值调换位置
genernateData(list,?k?+?1,?m);
swapData(list,?k,?i);
private?static?void?swapData(char?list[],?int?k,?int?i)?{
char?temp?=?list[k];
list[k]?=?list[i];
list[i]?=?temp;
将你其中某些问题的答案放在代码注释中了.
这个程序输出的是固定的九宫格,我想,是根据固有的九宫格中的数字与数组下标的关系来写的代码.
希望对你有所帮助,加油!
class?S{
public?static?void?main(String[]?args)?{?
//创建一个三阶方阵?
//A:java中数组的下标从0开始
//?同上?
//A:这里由于b=1,(int)/(int),java中数组的下标从0开始
//给数组赋值?
arr[a++][b++]?=?i;?
//————————————————?if...else里面的语句是什么意思,作用是什么?
b?=?b-1;//————————————————?同上?
else{??
}?
//————————————————————?他是怎么做到的?
System.out.println("输出九宫格:");?
//遍历输出九宫格?
System.out.print(arr[i][j]+"?");?
System.out.print("\n");//从你的程序中将此语句上移到此位置?
九宫格算法代码 C++版
#include stdio.h
0, 0, 0, 0, 0, 0, 0, 0, 0,
int i;
int j;
if(map[i][j])
printf(" %d ", map[i][j]);
printf(" ");
printf("\n");
int check(int x, int y, int *mark) //check函数为该格子可以选择的数字
int gi;
int gj;
int count = 0;
mark[i] = 0; //初始化
mark[map[x][i]] = 1; //表示该行该数字已存在
mark[map[i][y]] = 1; //表示该列该数字已存在
mark[map[gi + i][gj + j]] = 1; //此循环为表示所在子格子的九个小格子中已存在该数字
if(0 == mark[i]) //如果该数字不存在则++
count++;
return count;
void crack() //?
int mark[10]; //标志数字是否已存在
int min = 10; //记录最少可能数字数
int ci = -1; //ci,cj用来记录最少可能数字的格子所在行列
int cj;
if (map[i][j])
continue; //如果该格子已有数字则跳到下一个格子
int c = check(i, j, mark); //c为该格子可以选择的数字
if (0 == c)
if (c min)
ci = i;
cj = j;
min = c;
if (-1 == ci)
printf("The answer is:\n");
check(ci, cj, mark);//这个语句的作用是把mark这个数组设置成最小可能格子缺少的数字,若缺少则为0
if (mark[i] == 0)
map[ci][cj] = i; //先填入该数字
crack(); //进行判断
map[ci][cj] = 0; //若这个数字不可以得到解则判断下一可能数字(这里类似0-1背包问题)
int main()
printf("The game is:\n");
crack();
return 0;
Scanner?input?=?new?Scanner(System.in);
System.out.println("输入数字:");
int?k?=?input.nextInt();
if(arr[i][j]==k){
for(int?m=i-1;m=i+1;m++){
for(int?n=j-1;n=j+1;n++){
if(m!=i||n!=j)
System.out.print(arr[m][n]);
以上就是土嘎嘎小编为大家整理的java九宫图代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!