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
Programmiersprache Java: Wieso erhalte ich diese Fehlermeldung?

Hallo zusammen

Ich bin gerade wieder fleissig Java am programmieren und komme leider bei einem neuen Problem nicht weiter.

Der Code ist an und für sich schon fertig, nur schein bei der Zeile 17 (gem. Fehlermeldung etwas nicht korrekt zu sein, was ich leider nicht nachvollziehen kann. Kann mir jemand erklären wie das Problem behoben werden kann?

Von der Logik her müsste danach der Code funktionieren.

Aufgabenstellung:

2x Usereingabe -> 1x Min int Minimalwert & 1x Max int Maximalwert

Das Programm soll den ersten Index von int [] werte widergeben, welche das Minimum und Maximum Kriterium kumulativ erfüllt und danach sich beenden ohne weitere Werte anzugeben -> break.

int zähler habe ich als Indexcount verwendet.

Fehlermeldung:

Code an sich:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

int [] werte = {45, 34, 56, 63, 83, 18, 12, 79, 2, 35, 13, 68, 22, 54, 86, 33};

Scanner keyScan = new Scanner(System.in);

System.out.print("Minimum: ");

int min = keyScan.nextInt();

System.out.print("Maximum: ");

int max = keyScan.nextInt();

keyScan.close();

for (int zähler = 0; zähler<werte.length; zähler++) {

  if (werte [zähler] >= min && werte <= max) {

    System.out.print(werte[zähler]);

    break;}

 }

}

}
----------------------

Für eure Hilfe wäre ich sehr dankbar.

LG

Alex

Bild zum Beitrag
programmieren, Java, Programmiersprache, Fehlermeldung
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.