2D Array- Zeilensummen und Spaltensummen müssen die selben Summen haben. Wie prüfen?
Die Aufgabe sieht folgendermassen aus und ich komme einfach nicht weiter.
Wenn alle Spalten- und Zeilensummen gleich sind, ist es magisch.
Was muss im Code verändert werden?
Anbei der Code:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int [][] quadrat = new int[3][3];
Scanner keyScan = new Scanner(System.in);
// Quadrat einlesen
System.out.println("Bitte 9 Zahlen eingeben und mit Enter abschliessen");
for (int i=0; i<3; i++) {
for (int j=0; j<3; j++) {
quadrat[i][j] = keyScan.nextInt();
}
}
boolean magisch = true;
int magischeZahl = 0;
// TODO: Quadrat prüfen und die Variablen magisch und magischeZahl auf den richtigen Wert setzen.
// Ausgabe des Ergebnisses
if (magisch) {
System.out.println("Magisch: "+magischeZahl);
} else {
System.out.println("Nicht magisch");
}
keyScan.close();
}
}
1 Antwort
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[][] quadrat = new int[3][3];
Scanner keyScan = new Scanner(System.in);
// Quadrat einlesen
System.out.println("Bitte 9 Zahlen eingeben und mit Enter abschliessen");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
quadrat[i][j] = keyScan.nextInt();
}
}
boolean magisch = true;
int magischeZahl = 0;
// Summe für die erste Zeile ermitteln
for (int j = 0; j < 3; j++) {
magischeZahl = magischeZahl + quadrat[0][j];
}
// Summe für die folgenden Zeile bilden und mit 'magischeZahl' vergleichen
// Schleifenzähler i beginnt bei 1, die erste Zeile schon berechnet wurde.
for (int i = 1; magisch && i < 3; i++) {
int summe = 0;
for (int j = 0; j < 3; j++) {
summe = summe + quadrat[i][j];
}
magisch = magischeZahl == summe;
}
// Summe für die Spalten bilden und mit 'magischeZahl' vergleichen
for (int j = 0; magisch && j < 3; j++) {
int summe = 0;
for (int i = 0; i < 3; i++) {
summe = summe + quadrat[i][j];
}
magisch = magischeZahl == summe;
}
// Summe für die Diagonalen bilden und mit 'magischeZahl' vergleichen
if (magisch) {
int summe1 = 0; // Diagonale 1
int summe2 = 0; // Diagonale 2
for (int i = 0; i < 3; i++) {
summe1 = summe1 + quadrat[i][i];
summe2 = summe2 + quadrat[i][2 - i];
}
magisch = magischeZahl == summe1;
magisch = magischeZahl == summe2;
}
// Ausgabe des Ergebnisses
if (magisch) {
System.out.println("Magisch: " + magischeZahl);
} else {
System.out.println("Nicht magisch");
}
keyScan.close();
}
}
Woher ich das weiß:Berufserfahrung