我正在尝试这个简单的数独

时间:2016-07-27 13:42:44

标签: java duplicates elements

  

我正在尝试一个简单的数独程序。我开始采用3D中的值       数组,然后使用mr.serpardum的方法将它们复制到一维数组中。       我知道在我试图找到的地方有一个错误       重复元素,因为即使我给输出相同的数字输出       说“它是一个数独”,但我无法找到它......显然我不能添加任何东西       图片因为我没有足够的学分

    public class SecondAssignment {
    @SuppressWarnings("unused")
    public static void main(String[] args) throws IOException {
    int i = 0, j = 0, k = 0;
    boolean result = false;
    int arr1[][];
    arr1 = new int[3][3];
    int arr2[];
    arr2 = new int[9];
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Enter the elements in the sudoku block");
    //getting elements into array
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++) {
            arr1[i][j] = Integer.parseInt(br.readLine());
        }
    }
    //printing it in matrix form
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++) {
            System.out.print(arr1[i][j] + "\t");
        }
        System.out.println(" ");
    }
    //copying array1 elements into array 2
    for (i = 0; i < 3; i++) { 
        for (j = 0; j < 3; j++) {
            arr2[i * 3 + j] = arr1[i][j];
        }
    }

    //finding duplicate elements
    for (i = 0; i < arr2.length; i++) {
        for (int m = i + 1; m < arr2.length; m++) {
            if (arr2[i] == (arr2[m])) {
                System.out.println("Not a sudoku");
                //result = true;
            } else {
                System.out.println("Its a sudoku");
                //result = false;
            }
          }
      }
  }
}

1 个答案:

答案 0 :(得分:0)

您可以将代码更新为以下

//finding duplicate elements
for( i = 0; i < arr2.length; i++){
 for(int m = i+1; m < arr2.length; m++){
    if(arr2[i] == (arr2[m])){ 
      result = true;
      break;
    }
 }
}  
if(result){
System.out.println("\nNot a sudoku");
}
else{
System.out.println("\nIts a sudoku");
}

您应该在找到匹配后立即使用中断。 此代码仅检查数组(大小为9)中是否存在重复元素。