繁体   English   中英

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

[英]Finding repeated numbers in a 2x2 array. (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;
    }
}
  }
  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列和第1行开始)。

在您阅读此代码之前,我只是建议您,将会有更优雅的解决方案来解决您的问题。 我已经参考您的代码编写了此代码。

在这段代码中, testColumn()testRow()是两个方法,其作用只是检查该行/列中是否存在数字(作为这些函数的参数传递)。

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");
    }
}

PS我还没有编译这段代码。 如果有任何编译时错误,我提前致歉。 我欢迎任何建议或修改建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM