Java – die besten Beiträge

Magischer Würfel. If funktion überlastet?

Hallo zusammen

Ich bin aktuell an der spannenden Aufgabe eines magischen Würfels dran und scheine auch so gut wie fertig damit zu sein.

Leider erhalte ich die Meldung, dass die if Funktion zu fehlen schein, was logischerweise nicht der Fall ist. Meine if Funktion beinhaltet lediglich viele kumulativ zu erfüllende Kriterien.

Aufgabe:

  • Erstelle mit hilfe eines 2D-Arrays einen magischen Würfel.
  • Definition magischer Würfel = Würfel mit 3 Zeilen und 3 Spalten. Jede Spalte, jede Zeile und beide Diagonalen müssen den selben Wert ergeben, wenn diese zusammengerechnet werden:

Frage:

Wo liegt hier genau das Problem? Gibt es bei der if Funktion ein Maximum an Vergleichsoperatoren oder ist das schon rechtens? Ansonsten scheint der compiler mit dem Code einverstanden zu sein und müsste nachher somit funktionieren.

Fehlermeldung Compiler:

Vor einem "else"-Statement erwartet das System immer ein "if"-Statement. Es kann sein, dass das "else"-Statement nicht auf der gleichen Ebene ist. Schreibe das 'if'-Statement oder rücke das 'else' auf die richtige Ebene.

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();

}

}

int magischeZahl = 0;

// TODO: Quadrat prüfen und die Variablen magisch und magischeZahl auf den richtigen Wert setzen. 

  int Zeile1 = 0;

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;

j = 0;

    for (int i=0; i<3; i++) {

      Spalte1 += quadrat[i][j];}

  int Spalte2 = 0;

j = 1;

    for (int i=0; i<3; i++) {

      Spalte2 += quadrat[i][j];}

  int Spalte3 = 0;

j = 2;

    for (int i=0; i<3; i++) {

      Spalte3 += quadrat[i][j];}

int Diagonaleuntennachoben = 0;

i = 2;

j = 0;

int count = 0;

if (count<3) {

  Diagonaleuntennachoben += quadrat[i][j];

  i--;

  j++;}

  int Diagonaleobennachunten = 0;

i = 0;

j = 0;

count = 0;

if (count<3) {

  Diagonaleobennachunten += quadrat[i][j];

  i++;

  j++;}

  int magischeZahl = Zeile1;

 

// Ausgabe des Ergebnisses

if (Zeile1 == Zeile2 && Zeile1 == Zeile3 && Zeile1 == Spalte 1 && Zeile1 == Spalte2 && Zeile1 == Spalte3 && Zeile1 == Diagonaleobennachunten && Zeile1 == Diagonaleuntennachoben) {

System.out.println("Magisch: "+magischeZahl);}

else {

System.out.println("Nicht magisch");}

keyScan.close();

}

}

Habe die Frage mit verbessertem Code und einem letzten kleinen Array Problem nochmals gestellt, da ich für eine Anpassung der Frage hier kaum mehr Zeichen zur Verfügung habe (Anzahl Zeichen pro Frage ist leider begrenzt).

Hier der Link:

https://www.gutefrage.net/frage/fehler-im-array-neue-frage-magischer-wuerfel

Bild zum Beitrag
programmieren, Java

Meistgelesene Beiträge zum Thema Java