これは私がイントロJavaクラスのために取り組む学校の問題です。この割り当ては、ランダムに生成された2進数の8×8行列を生成するプログラムを作成し、もしあれば列がすべて0であり、メジャーおよびマイナーな対角線もゼロから構成されているかどうかをプログラムにチェックさせる。主対角は、左上隅から右下隅にかけて形成された対角線(すなわち、arrayName[0][0]
〜arrayName[8][8]
)であり、副対角線は、行列の右上隅から左下隅に向かう斜辺である。2D配列のメジャーとマイナーな対角線が0からなるかどうかを調べる
メジャーとマイナーな対角線をチェックする部分を除いて、すべてが機能しています。なぜこれが機能しないのかわかりません。私がしようとしてきたのは、対角線に沿ったゼロの数を数えるだけです。その数が8なら、あなたは0からなる対角になります。ここではメジャーとマイナーのアレイのための私が持っている2つの方法です:
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ではないにもかかわらず、 "すべてのゼロがメジャーダイアゴナルに"印刷されます。
これは意味があると思いますが、何か助けていただきありがとうございます。
これは少し一般的なものにするために、最終チェックでリテラル '8'ではなく' length'を使う価値があります(ループで使用しているので)。 –
良い点、私はちょうど元の質問から印刷行をコピー貼り付けました。 –
ありがとうございます。私はあなたに1つ借りている。 – maxvcore