- 您没有保存输入的内容,因此将0x0 square传递给
isMagicSquare()
。 isMagicSquare()
许多方面的实现是错误的。- 条件
x > side
应该是x < side
。 - 您
sumD
只需要在计算完成后检查即可。 - 您必须先进行初始化
sumX
,sumY
然后再计算它们。 - 您应该使用
+=
而不是=+
来计算总和。
- 条件
纠正:
使代码保存输入
do{ System.out.print("Enter an int. Enter -1 when done>"); current = Integer.parseInt(in.nextLine()); if (current != -1) ints.add(current); // add this line to the loop to read the input}while(current != -1);和正确的
isMagicSquare()。
private static Boolean isMagicSquare(int[][] array){ int side = array.length; int magicNum = 0; for(int x = 0; x < side; ++x){ magicNum += array[0][x]; } int sumD = 0; for(int x = 0; x < side; ++x){ int sumX = 0; int sumY = 0; for (int y = 0; y < side; ++y){ sumX += array[x][y]; sumY += array[y][x]; } sumD =+ array[x][x]; if(sumX != magicNum || sumY != magicNum){ return false; } } return sumD == magicNum;}


