public static boolean isValidSquare(int[][] grid, int i, int j) {
int[][] square = new int[3][3];
int row = 0; int column = 0;
for (int x = i; x < i + 3; x++) {
for (int y = j; y < j + 3; y++) {
square[row][column] = grid[x][j];
column++;
}
row++;
}
return true;
}
然而,当我运行它时,该方法始终返回true。我尝试将for循环中的条件分别更改为i + 2和j + 2,但仍然存在相同的问题。
还是与这段代码有关,它抛出到该方法中?
for (int i = 0; i < grid.length; i += 3) {
for (int j = 0; j < grid[i].length; j += 3) {
if (isValidSquare(grid, i, j) == false)
return false;
}
}
更新:刚刚测试了哪些方法有效,程序甚至没有到达ValidSquare部分,返回false的是Column方法:
public static boolean isValidColumn(int[][] grid, int i) {
for (int j = 0; j < grid[0].length - 1; j++) {
for (int k = j; k < grid.length; k++) {
if ((grid[j][i] < 1 || grid[j][i] > 9) || grid[j][i] == grid[k][i])
return false;
}
}
return true;
我无法弄清楚是什么原因导致它不断地声明为false,我打印并检查了每一列,看起来没问题。
编辑2:好吧,第一列只是因为我将k设置为j而不是j+1。关于子方格方法的另一个问题仍然困扰着我,因为它在'3'处抛出了OutOfBoundsException异常。
return true;
吗? - WW.