簡體   English   中英

二維陣列對角線和

[英]2D array diagonal sum

所以我試圖將對角線相加並將其與魔術常數進行比較。 如果它們是相同的,那么它就是一個神奇的方塊。 我能夠為對角線編寫代碼但是它向我顯示了錯誤的結果。 我的代碼在這里:

 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

有關詳細信息,請參閱評論中的討論

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM