Dies ist ein Schulproblem, ich arbeite für eine Intro-Java-Klasse. Die Aufgabe besteht darin, ein Programm zu schreiben, das eine 8 x 8-Matrix von zufällig generierten Binärzahlen erzeugt und die Programmüberprüfung hat, ob Spalten alle 0 sind und ob die Haupt- und Nebendiagonalen auch aus Nullen bestehen. Eine Hauptdiagonale ist die Diagonale, die von der oberen linken Ecke zur unteren rechten Ecke gebildet wird (dh arrayName[0][0]
bis arrayName[8][8]
in diesem Fall) und eine Nebendiagonale ist eine, die von der oberen rechten Ecke zur unteren linken Ecke der Matrix geht.Finden, ob die Haupt- und Nebendiagonalen des 2D-Arrays aus 0s bestehen
Ich habe alles funktioniert außer für den Teil, der für die Haupt- und Nebendiagonalen überprüft, und ich kann nicht herausfinden, warum das nicht funktioniert. Was ich versucht habe, ist einfach die Anzahl der Nullen entlang der Diagonalen zu zählen, und wenn diese Zahl 8 ist, dann hast du eine Diagonale, die aus Nullen besteht. Hier sind die beiden Verfahren, die ich für den Haupt- und Neben Array:
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");
}
Ein interessanter Fehler, die ich auf, wenn ich versuchte, die große Diagonale zu finden, indem für die Schleife in dem Aufwärtszählen, das heißt:
for(int row = 0; row< board.length; row++)
for(int column = 0; column < board.length; column++)
if(board[row][row] == 0) count++;
Der Code würde nicht funktionieren, aber wenn die Diagonale alle 1 und eine einzige 0 hätte, würde es "Alle Nullen auf der Hauptdiagonale" drucken, obwohl die Variable count nicht acht war.
Hoffe das macht Sinn, danke für jede Hilfe.
Alles gut, obwohl es wahrscheinlich lohnenswert ist, 'length' anstelle von literal' 8' in der letzten Prüfung zu verwenden (da Sie es in der Schleife verwenden), um dies etwas generischer zu machen. –
Guter Punkt, ich kopierte einfach die Druckzeile von der ursprünglichen Frage. –
Vielen Dank für die Einzelheiten. Ich schulde euch einen. – maxvcore