Java 为什么下面的数组返回false?

Java 为什么下面的数组返回false?,java,algorithm,Java,Algorithm,我试图解决给定的问题: “数独是一个数字布局难题。其目的是用数字填充9×9的网格,使每列、每行以及构成网格的9个3×3子网格中的每一个都一次性包含1到9的所有数字 实施一种算法,根据上述布局规则检查给定的数字网格是否表示有效的数独游戏。请注意,网格表示的游戏不必是可解的。” 示例网格为: grid = [['.', '.', '.', '1', '4', '.', '.', '2', '.'], ['.', '.', '6', '.', '.', '.', '.', '.', '

我试图解决给定的问题:

“数独是一个数字布局难题。其目的是用数字填充9×9的网格,使每列、每行以及构成网格的9个3×3子网格中的每一个都一次性包含1到9的所有数字

实施一种算法,根据上述布局规则检查给定的数字网格是否表示有效的数独游戏。请注意,网格表示的游戏不必是可解的。” 示例网格为:

grid = [['.', '.', '.', '1', '4', '.', '.', '2', '.'],
        ['.', '.', '6', '.', '.', '.', '.', '.', '.'],
        ['.', '.', '.', '.', '.', '.', '.', '.', '.'],
        ['.', '.', '1', '.', '.', '.', '.', '.', '.'],
        ['.', '6', '7', '.', '.', '.', '.', '.', '9'],
        ['.', '.', '.', '.', '.', '.', '8', '1', '.'],
        ['.', '3', '.', '.', '.', '.', '.', '.', '6'],
        ['.', '.', '.', '.', '.', '7', '.', '.', '.'],
        ['.', '.', '.', '5', '.', '.', '.', '7', '.']]
预期的结果是真实的

我编写了以下代码来解决此问题:

boolean sudoku2(char[][] grid) {
for(int i =0; i < 9 ; i++){
    char [] zeroTab = new char[]{'0','0','0','0','0','0','0','0','0'} ;
    char [] zeroTab1 = new char[]{'0','0','0','0','0','0','0','0','0'} ;
    for(int g = 0; g < 9; g++){
        if(grid[i][g] != '.'){
            Integer k = Integer.parseInt(String.valueOf(grid[i][g]));
            if(zeroTab[k-1] == '0'){
                zeroTab[k-1] = grid[i][g];
            }
            else return false;
        }
        if(grid[g][i] != '.'){
            Integer c = Integer.parseInt(String.valueOf(grid[g][i]));
            if(zeroTab1[c-1] == '0'){
                zeroTab1[c-1] = grid[g][i];
            }
            else return false;
        }
    }
}
    return true;

数字3在中下部的方形网格中出现两次


(在我看来,您根本没有编写任何代码来测试方形子网格)

您尝试过通过代码进行调试吗?特别是,您可以在这两个
return false
语句上设置断点,并查看它返回false的点。我希望任何试图帮助您的人从一开始就必须做到这一点,因此您这样做也是有意义的。顺便说一句,将传入网格表示为
string[]
,这样您的测试就不需要任何逗号或引号了……我想我的问题更多的是理解一个问题,而不是代码。我不知道为什么我的代码应该返回false而不是true。我一遍又一遍地查看这个数组,仍然找不到它返回false的原因。哦,在这种情况下,这实际上是关于数独而不是代码的。如果你能编辑这篇文章,让它更清晰,那会有帮助的。(这也是堆栈溢出的话题,但我可以理解为什么您可能没有看到这一点。)正如Erwin Smout所指出的,底部中心3x3网格有3次。感谢您的帮助!下次我会努力做得更好。
[[".",".",".",".",".",".","5",".","."], 
 [".",".",".",".",".",".",".",".","."], 
 [".",".",".",".",".",".",".",".","."], 
 ["9","3",".",".","2",".","4",".","."], 
 [".",".","7",".",".",".","3",".","."], 
 [".",".",".",".",".",".",".",".","."], 
 [".",".",".","3","4",".",".",".","."], 
 [".",".",".",".",".","3",".",".","."], 
 [".",".",".",".",".","5","2",".","."]]