有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我是一名编程新手,有人要求我用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行开始)


共 (1) 个答案

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

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