Ich habe folgenden Code, in dem eine Matrix, durch die Systemeingabe definiert ist:Scanner Objekt hält Eingang erwartet
import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//define size of matrix
int size = in.nextInt();
int primeSum = 0;
int secSum = 0;
int[] matrix = new int[size*size];
//create matrix
for (int i=0; i<size*size;i++) {
matrix[i] = in.nextInt();
}
in.close();
//sum primary diagonal
for (int i=0; i < size*size;i += (size + 1)) {
primeSum = primeSum + matrix[i];
}
////sum secondary diagonal
// for (int i=(size - 1); i < size*size; i += (size - 2)) {
// secSum = secSum + matrix[i];
// }
System.out.println(Math.abs(secSum - primeSum));
}
}
Der obige Code arbeitet, dass es den Benutzer erlaubt, eine NxN-Matrix durch Eingeben N als definieren Größe - also in der Fallgröße = 2 würde der Benutzer 4 Matrixelemente definieren. Nach dem Zurückkommen im Code für die sekundäre Diagonale erwartet das Scannerobjekt jedoch Eingaben über 4 ganze Zahlen hinaus - ich habe keine Ahnung, warum dies das Programm beeinflussen würde, wenn ich den Eingabestrom schließe, bevor dieser Codeblock erreicht ist.
Stellen Sie sich vor Ihrem Beispiel, Sie sind in einer Endlosschleife läuft: Matrix size = 2. Glauben Sie, 'i + = (Größe - 2) 'wird' i' inkrementieren? Beachten Sie, dass jede Größe> 2 wieder funktioniert. – SomeJavaGuy
Nein, aber in der Fallgröße = 3 und darüber hinaus wird es – BenWS
Ja, aber dann wird die Bedingung 'i
SomeJavaGuy