這是我正在爲Java intro介紹的一個學校問題。該任務是編寫一個程序,該程序生成隨機生成的二進制數的8 x 8矩陣,並讓程序檢查哪些列(如果有的話)列都是0,以及主要和次要對角線是否也包含零。主對角線是從左上角到右下角形成的對角線(即在此情況下爲arrayName[0][0]
至arrayName[8][8]
),而小對角線是從矩陣的右上角至左下角的對角線。查找二維數組的主對角線和次對角線是否由0組成
我已經得到了一切工作,除了檢查主要和次要對角線的部分,我不明白爲什麼這不起作用。我一直試圖做的只是計算對角線上零點的數量,如果這個數字是8,那麼你已經有了一個由0組成的對角線。這裏有兩種方法,我對主要和次要陣列:
public static void majorDiagonal(int[][] board) {
byte count = 0;
for(int row = board.length - 1, offsetNumber = board.length - 1; row > 0; row--, offsetNumber--)
for(int column = board.length - 1; column > 0; column--)
if(board[row][offsetNumber] == 0) count++;
if(count == 8) System.out.println("All zeroes on the major diagonal");
}
public static void minorDiagonal(int[][] board) {
byte count = 0;
for(int row = board.length - 1, offsetNumber = 0; row > 0; row--, offsetNumber++)
for(int column = board.length - 1; column > 0; column--)
if(board[row][offsetNumber] == 0) count++;
if(count == 8) System.out.println("All zeroes on the minor diagonal");
}
,我遇到了,當我試圖在for循環計數找到主對角線一個有趣的錯誤,即:
for(int row = 0; row< board.length; row++)
for(int column = 0; column < board.length; column++)
if(board[row][row] == 0) count++;
該代碼不起作用,但是如果對角線全部爲1並且爲單個0,則即使變量count不是8,也會打印「主要對角線上的全零」。
希望這是有道理的,感謝您的任何幫助。
雖然在最終檢查中使用`length`而不是`literal`可能值得使用(因爲您在循環中使用它),所以這樣做稍微更通用一些。 – 2009-07-27 23:42:35
好點,我只是複製粘貼來自原始問題的打印行。 – 2009-07-27 23:45:23