現在、私は8x8 2D配列ボードにランダムな0と1を生成するプログラムに取り組んでいます。私は何をしているのは対角線上のすべての数字が同じであれば(だけでなく、任意の対角線の隅から開始)かどうかを確認しているJava - 2D配列チェック対角番号ボード
例:
int[][] array = {
{0, 0, 0, 0, 0, 0, 0, 1},
{0, 0, 1, 0, 1, 0, 1, 0},
{0, 0, 0, 0, 1, 1, 1, 0},
{0, 0, 0, 0, 1, 1, 1, 0},
{0, 0, 1, 1, 0, 1, 1, 0},
{0, 0, 1, 0, 0, 0, 1, 0},
{0, 1, 0, 0, 0, 0, 0, 0},
{1, 0, 0, 1, 1, 1, 1, 0}
};
だから、偶然であれば、すべての左上隅(0,0)、(1,1)...(7,7)から始まる数字はすべて0または1のいずれかであることを示すスキャナに出力する必要があります。「主対角0 "(上記の例から)。
また、この例では、右上から左下に向かって数字「1」が斜めに繰り返されていることがわかります。次に、「1の小角があります」と表示する必要があります。
これまでのところ、配列に数値を生成して入力する方法を理解しましたが、確認方法はわかりません。これは私がこれまで持っているものです。
public class javaTest{
// Main method
public static void main(String[] args) {
int[][] array = {
{0, 0, 0, 0, 0, 0, 0, 1},
{0, 0, 1, 0, 1, 0, 1, 0},
{0, 0, 0, 0, 1, 1, 1, 0},
{0, 0, 0, 0, 1, 1, 1, 0},
{0, 0, 1, 1, 0, 1, 1, 0},
{0, 0, 1, 0, 0, 0, 1, 0},
{0, 1, 0, 0, 0, 0, 0, 0},
{1, 0, 0, 1, 1, 1, 1, 0}
};
// Print array numbers
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++)
System.out.print(array[i][j] + " ");
System.out.println();
}
// Print checkers
checkMajorDiagonal(array);
}
// Check major diagonal
public static void checkMajorDiagonal(int array[][]) {
int majDiag;
boolean isMatching = true;
int row = 0;
for(row = 0; row < array.length; row++){
majDiag = row;
if(array[row][row] != array[row+1][row+1]){
isMatching = false;
break;
}
}
//If all elements matched print output
if(isMatching)
System.out.println("Major diagnol is all " + array[row][row]);
}
}
けれども、私はエラーがあるとしてそれになりたいと、これまで動作していない持っている、と私はまだマイナーな対角線を行うために持っているもの。前もって感謝します。
ありがとうございます。私はどのようにマイナーな対角線で始めるだろうか? – Flinze
がanwerに追加されました – nullpointer
マイナーな対角線に対する私の解(上)は、より効率的です(O(nの代わりにO(n))。しかし、この場合は問題ではないかもしれません。 – nhouser9