二维阵列对角线总和

时间:2016-10-31 02:12:16

标签: java multidimensional-array diagonal magic-square

所以我试图将对角线相加并将其与魔术常数进行比较。如果它们是相同的,那么它就是一个神奇的方块。我能够为对角线编写代码但是它向我显示了错误的结果。我的代码在这里:

 public static boolean checkDiagonals(int[][] array, int magicConstant){
   int total = 0;
   int wrong = 0;
   for(int i = 0; i < array.length; i++){
     total= total + array[i][i] + array[array.length - i-1][array.length - i-1];
   }
   if(total!=magicConstant){
     wrong++;
  }
  System.out.println("There were " + wrong + " invalid diagnals.");
  return wrong == 0;
}

我的输出是

  

尺寸:3

     

1 1 1

     

5 5 5

     

9 9 9

     

1 1 1
  5 5 5
  9 9 9
  神奇常数是15

     

有1个无效的诊断。

     

这不是一个神奇的方块。

     

尺寸:3

     

8 1 6

     

3 5 7

     

4 9 2

     

8 1 6
  3 5 7
  4 9 2
  神奇常数是15

     

有1个无效的诊断。

     

这不是一个神奇的方块。

正确的输出应显示第二个是Magic square 但是我的程序说它不是。

为什么我认为我的代码存在问题,因为每个广场都有There were 1 invalid diagnals.,所以这里有问题。

修改 我在获取正确输出时遇到问题。我相信它与添加digonals有关为什么它为每个方块保持打印1个无效对角线。我显示的输出仅适用于2个方格,但是当我尝试使用其他方块时,它会继续打印1 invalid diagonal

1 个答案:

答案 0 :(得分:0)

有关详细信息,请参阅评论中的讨论:

 public static boolean checkDiagonals(int[][] array, int magicConstant){
   int total1 = 0;
   int total2 = 0;
   int wrong = 0;
   for(int i = 0; i < array.length; i++){
     total1= total1 + array[i][i];
     total2 = total2 + array[array.length - i-1][array.length - i-1];
   }
   if(total1!=magicConstant){
     wrong++;
  }
   if(total2!=magicConstant){
     wrong++;
  }
  System.out.println("There were " + wrong + " invalid diagnals.");
  return wrong == 0;
}