Magischer Würfel. If funktion überlastet?

schnfz  26.07.2022, 07:08
Leider erhalte ich die Meldung, dass die if Funktion zu fehlen schein

Was ist die genaue Meldung?

ITundMathe 
Fragesteller
 26.07.2022, 22:16

Hi danke für deine Rückmeldung. Konnte das Problem lösen und scheine nun kurz vor der Lösung zu sein, aber es ist ein array problem noch aufgetaucht (siehe überarb. Frage)

LG
Alex

3 Antworten

Das ist keine Fehlermeldung des Compilers, sondern eher ein Hinweis deiner Entwicklungsumgebung. Sobald du die 25 vorausgehenden Fehler behoben hast, wird der Hinweis von allein verschwinden.

Im Wesentlichen geht es um zwei Fehler:

  • magischeZahl ist doppelt definiert.
  • i und j sind nur innerhalb der for-Schleifen sichtbar. Du müsstest diese Variablen auch außerhalb definieren. Allerdings musst du sie anders benennen, weil sonst die Neudefinition in den nachfolgenden for-Schleifen nicht mehr erlaubt ist. (Das ist ein spezielles Java-Problem.)

ITundMathe 
Fragesteller
 26.07.2022, 22:57

Danke für deine Rückmeldung. Habe ich mittlerweile auch herausgefunden ;) danke dir trotzdem für deine Rückmeldung; war nicht sicher ob es an den Deklarationen lag obwohl ich es hätte wissen müssen. Die Fehler konnte ich überall ausmerzen, nun habe ich nur noch mit dem Array der beiden letzten while Funktionen zu kämpfen (siehe Link oben). Evtl. kannst du mir nochmals eine Rückmeldung geben? Ich würde mich freuen.

LG
Alex

0

Syntaktisch sehe ich in der if-Anweisung auf dem ersten Blick keinen Fehler, außer das Blank bei "Spalte 1".

Du kannst ja mal nach und nach immer eine weitere Bedingung wegnehmen und schauen, ob es dann funktioniert.

Für die Summenberechnungen würde ich mir Funktionen schreiben, weil vieles Ähnliches öfter gemacht wird, zum Beispiel SumZeile(int Zeile)

Die Diagonalen könntest du kompakter so berechnen:

for(i=0;i<3;i++){
  Diagonaleobennachunten += quadrat[i][i];
  Diagonaleuntennachoben += quadrat[2-i][i];
}
Woher ich das weiß:Berufserfahrung – Programmierer

Suboptimierer  26.07.2022, 07:18

Die Spalten- und Zeilensummierung könntest du auch nett kürzen, wenn du pro Zeile und Spalte ein Array verwenden würdest.

for(i=0;i<3;i++){
  for(j=0;j<3;j++){
    sumZeile[i] += quadrat[i][j];
    sumSpalte[i] += quadrat[j][i];
  }
  // Dann noch die Diagonalen (siehe oben)
  Diagonaleobennachunten += quadrat[i][i];
  Diagonaleuntennachoben += quadrat[2-i][i];
}

Dann kannst du auch bei den Prüfungen durchiterieren:

magisch = true;
for(i=0;i<3;i++)
  if(sumZeile[0] != sumZeile[i] || sumZeile[0] != sumSpalte[i])
    magisch = false;
magisch = magisch && sumZeile[0] == Diagonaleobennachunten && sumZeile[0] == Diagonaleuntennachoben;

Noch besser wäre es, wenn du direkt nach der Berechnung einer Summe prüfen würdest, ob sie mit der ersten Summe übereinstimmt. Denn falls die Summen nicht übereinstimmen, kannst du die Berechnung mit break verlassen und direkt "nicht magisch" ausgeben.

0
ITundMathe 
Fragesteller
 26.07.2022, 22:55
@Suboptimierer

Hallo

Danke für deine Rückmeldung. Ich habe die Fehler soweit alle beheben können; nur noch der Array Speicher macht mir zu schaffen, aber das Programm an sich funktioniert nun. Kann ich nochmals eine Rückmeldung von dir auf den neuen Fehler erhalten? Mir ist wichtig, dass ich nur Funktionen & Varianten verwende, welche ich bereits kenne also:

  • int, String, double, char, charAt, Array, 2D Array
  • if , else, else if, while, for, boolean

Den Link habe ich oben in der Frage ergänzt, da ich die Frage für andere im Forum lassen möchte, welche ein ähnliches Problem haben. Beim Link kommst du direkt auf den verbesserten Code, bei welchem nun nur noch der Array Probleme macht.

LG
Alex

0
Suboptimierer  27.07.2022, 09:57
@ITundMathe

Ich lese gerade in der anderen Frage, dass dein Code funktioniert, also hat sich das Thema für mich erledigt.

0
int count = 0;
if (count<3) { …

Das if Statement ist immer True, da 0 < 3 true ist. Wozu dann also die if Abfrage?

Diese Stelle hast du zwei mal im Code.

Woher ich das weiß:Berufserfahrung – Game Developer mit Lehrerfahrung

ITundMathe 
Fragesteller
 26.07.2022, 22:58

Danke für deine Rückmeldung. Habe ich mittlerweile auch herausgefunden ;) danke dir trotzdem für deine Rückmeldung. Die Fehler konnte ich überall ausmerzen, nun habe ich nur noch mit dem Array der beiden letzten while Funktionen zu kämpfen (siehe Link oben). Evtl. kannst du mir nochmals eine Rückmeldung geben? Ich würde mich freuen.

LG

Alex

0