【发布时间】:2017-11-13 02:43:12
【问题描述】:
我正在研究的问题是:
如果每行、每列和两条对角线的元素之和相同,则边长为 n 的正方形用数字填充1,2,3,...n2 是一个幻方。
编写一个程序,从键盘读取 16 个值,并测试它们在放入 4 x 4 数组时是否形成魔方。您需要测试以下 2 个功能:
-
1,2,...16的每个数字是否都出现在用户输入中?如果用户输入了他们已经输入的数字,请告诉他们再试一次。 - 将数字放入正方形时,行、列和对角线之和是否相等?
- 必须使用二维数组来完成
如果用户输入了之前输入的数字,我无法要求他们重试。而且,4 x 4 中的数字不打印。
我究竟做错了什么?我该如何解决?
这是我目前的代码:
Scanner in = new Scanner (System.in);
int n =4;
int[][] square = new int[n][n];
int number = 0;
int num = 0;
for (int i = 0; i <16; i++){
number = num;
System.out.print ("Enter a number: ");
num = in.nextInt();
int num_2 = 0;
if (number==num || number==num_2) {
System.out.println ("Try again.");
System.out.println ("Enter a number: ");
num_2 = in.nextInt();
}
if (num > 16){
System.out.println ("Try again.");
break;
}
}
for (int i= 0; i < n; i++){
for (int j = 0; j < n; j++) {
num+=square [i][j];
System.out.print(square[i][j] + "\t");
}
}
}
}
【问题讨论】:
-
请帮助我了解您在第一个功能中想要什么。我认为应该是从 1 到 16 的错字。我说的对吗?
-
你是对的。对不起,从 1 到 16。