Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在2x2数组中查找重复的数字。(爪哇)_Java - Fatal编程技术网

Java 在2x2数组中查找重复的数字。(爪哇)

Java 在2x2数组中查找重复的数字。(爪哇),java,Java,我是一名编程新手,有人要求我用java创建一个程序,读取数独网格中的数字,并确保列和行中没有重复的数字,这就是我目前所拥有的: int e=0; int h=0; boolean k = true; int sd = 0; for (int i=0; i< 9; i++){ for (int j=i+1; j< 9; j++){ if (sudoku[j][0]==sudoku[i][0]){ k=false; } }

我是一名编程新手,有人要求我用java创建一个程序,读取数独网格中的数字,并确保列和行中没有重复的数字,这就是我目前所拥有的:

  int e=0;
  int h=0;
  boolean k = true;
  int sd = 0;

  for (int i=0; i< 9; i++){
    for (int j=i+1; j< 9; j++){
      if (sudoku[j][0]==sudoku[i][0]){
        k=false;
    }
}
  }
  for (int i=0; i< 9; i++){
    for (int j=i+1; j< 9; j++){
      if (sudoku[0][j]==sudoku[0][i]){
        k = false;
    }
}
}

      if ( k){
        System.out.println("Valid sudoku");
      }
      else if ( !k){
        System.out.println("Not a valid sudoku");
      }

}
我的代码没有按它应该的方式工作,因为它总是显示有效的数独,即使它不应该显示,我想知道如何修复它。
在此之前,我感谢您对我的任何帮助。我的想法是将其作为1x1数独进行扫描,但添加0,使其在每种情况下从第0列和第0行开始。

在阅读此代码之前,我只建议您有更优雅的解决方案来解决您的问题。我写这段代码是为了参考你的代码

在这段代码中,testColumn和testRow是两个方法,它们的工作只是检查作为这些函数的参数传递的numberpassed是否存在于此行/列中

int testColumn(int grid[9][9], int column, int number) {
    for(int row=0; row<9; row++) {
        if(grid[row][column]==number) {
            return 1;
        }
    }
    return 0;
}

int testRow(int grid[9][9], int row, int number) {
    for(int column=0; column<9; column++) {
        if(grid[row][column]==number) {
            return 1;
        }
    }
    return 0;
}

void checkRowColumn(int grid[9][9]) {
    boolean k=true;

    for(int row=0; row<9; row++) {
        for(int column=0; column<9; column++) {

            int numberToCheck = grid[row][column];

            if(testColumn(grid, column, numberToCheck)) {
                k = false;
            }
            if(testRow(grid, row, numberToCheck)) {
                k = false;
            }

        }
    }

    if(k) {
        System.out.println("Valid Sudoku");
    }
    else {
        System.out.println("Invalid Sudoku");
    }
}

另外,我还没有编译这段代码。如果有任何编译时错误,我提前道歉。我欢迎任何建议或编辑。

在这种时候,你将失去一个重要的学习机会,让别人向你指出问题所在。相反,请学习如何使用IDE的调试器,并逐行检查代码提示:不需要很长时间就可以找到错误的部分。如果不使用IDE,添加print语句以了解代码流。您可以尝试使用三个循环,也可以使用HashSet检查数字是否重复。下面是一个提示。想想0在if sudoku[j][0]==sudoku[i][0]中的含义谢谢你的回答,我已经知道了,我发现它永远不会实现,假设0是数组的第一个字符,如果我将它设置为1,它确实会工作,但是,我不确定为什么会发生,为什么会发生?我明白了,非常感谢你花时间编写它,我知道可能有更优雅的方法可以做到这一点,但由于我仍在学习,我不知道如何做到这一点,我真的很感谢你在这方面帮助我。我将花一段时间研究一下,看看其中的一些差异。