Hallo zusammen
Ergänzung/Update:
Konnte den Fehler beheben, habe leider die if mit der while Funktion verwechselt und nun angepasst (wollte logischerweise eine Schleife und keinen einmaligen durchlauf, da ich ja jeweils 3 Felder zusammenrechnen möchte pro Variabel.
Aufgabe: magischer Würfel
Letztes Problem:
Das Programm läuft soweit nur hat es nun noch ein Arrayproblem und das anscheinend auf Zeile 58 was hier im Code die beiden while Funktionen für die Diagnoalen "Diagonaleobennachunten" & "Diagonaleuntennachoben " betrifft. Leider scheint auch hier die Logik irgendwie nicht aufzugehen. Kann jemand nachvollziehen wieso er beim 2D array aus dem vordefinierten Wertebereich 0-2 (3 Speicherwerte pro Dimension) die Meldung gibt das nun -1 und somit ein Wert ausserrhalb des Speicherplatzes vorhanden sein sollte?
Das Array Problem konnte nun ebenfalls gelöst werden (vor lauter Code Kontrolle nicht mehr berücksichtigt (Schande über mein Haupt ;P)
Falls jemand den Code auch Mal testen will hier der funktionierende magische Wüfel als Java 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();
}
}
// TODO: Quadrat prüfen und die Variablen magisch und magischeZahl auf den richtigen Wert setzen.
int Zeile1 = 0;
int i = 0;
for (int j=0; j<3; j++) {
Zeile1 += quadrat[i][j];}
int Zeile2 = 0;
i = 1;
for (int j=0; j<3; j++) {
Zeile2 += quadrat[i][j];}
int Zeile3 = 0;
i = 2;
for (int j=0; j<3; j++) {
Zeile3 += quadrat[i][j];}
int Spalte1 = 0;
int j = 0;
for (i=0; i<3; i++) {
Spalte1 += quadrat[i][j];}
int Spalte2 = 0;
j = 1;
for (i=0; i<3; i++) {
Spalte2 += quadrat[i][j];}
int Spalte3 = 0;
j = 2;
for (i=0; i<3; i++) {
Spalte3 += quadrat[i][j];}
int Diagonaleuntennachoben = 0;
i = 2;
j = 0;
int count = 0;
while (count<3) {
Diagonaleuntennachoben += quadrat[i][j];
i--;
j++;
count++;
}
int Diagonaleobennachunten = 0;
i = 0;
j = 0;
count = 0;
while (count<3) {
Diagonaleobennachunten += quadrat[i][j];
i++;
j++;
count++;
}
int magischeZahl = Zeile1;
// Ausgabe des Ergebnisses
if (Zeile1 == Zeile2 && Zeile1 == Zeile3 && Zeile1 == Spalte1 && Zeile1 == Spalte2 && Zeile1 == Spalte3 && Zeile1 == Diagonaleobennachunten && Zeile1 == Diagonaleuntennachoben) {
System.out.println("Magisch: "+magischeZahl);}
else {
System.out.println("Nicht magisch");}
keyScan.close();
}
}
--------------
LG
Alex