Wieso beendet sich das Java-Programm von selbst?

2 Antworten

Der Vergleich im if ist immer false, weil Du nicht vergleichst, sondern zuweist.


lollo939l 
Fragesteller
 04.01.2022, 16:54

Und wie kann ich die vergleichen?

0
lollo939l 
Fragesteller
 04.01.2022, 16:59
@W00dp3ckr

Verstanden, war warscheinlich ein Tippfehler.

Geändert hat sich aber nichts, das Programm beendet sich weiterhin an der gleichen Stelle...

0

Ohne den kompletten code ist das schwer zu sagen. ascVocablesAgain macht nur etwas, wenn das vokablen array false enthält an den stellen (gesetzt den fall du hast das zu "==" geändert). Nach einem Durchlauf über alle vokabeln ist da schluss.

Besorg dir nen vernünftigen Java Editor wie z.B. Eclipse und dann debugg das Programm. Das ist am einfachsten.

Woher ich das weiß:Berufserfahrung

W00dp3ckr  04.01.2022, 18:44

Abgesehen davon, dass Eclipse eine IDE ist, finde ich den Tipp sehr gut.

0
lollo939l 
Fragesteller
 04.01.2022, 19:31

Also wie gesagt, das Array enthält ja einen boolean der false ist.

Eine vernünftige IDE habe ich, ich dachte debuggen erlaubt nur, code während das programm läuft zu ändern? Oder mache ich auch da was falsch.

(Das Problem, das es nicht funktioniert habe ich behoben, wie genau - keine Ahnung)

0
W00dp3ckr  04.01.2022, 20:44
@lollo939l

Nein, es erlaubt, das Programm schrittweise auszuführen und zu checken, welche Variablen wie belegt sind.

1
xYurisha  04.01.2022, 23:13
@lollo939l

Wenn beim ausführen keine Fehlermeldung gekommen ist vermute ich mal das entweder der case fall nie eintraf, oder du nie in die if-Bedingung gekommen bist in die du wolltest. Am besten machst du dir bevor du den Code schreibst kleine Notizen welcher Aufbau dein Code haben sollte, so behältst du die Übersicht. Dabei können auch Kommentare im Code helfen.

0
lollo939l 
Fragesteller
 05.01.2022, 21:35
@xYurisha

Das habe ich auch gemacht, bin durch ein bisschen testen drauf gekommen, das die for-schleife nur bis 3 anstatt 4 gezählt hat. Dachte ich muss 1 abziehen da Main.vokabeln.length 4 ist, aber die Belegungen bei 0 anfangen (von 0 bis 3 wären dann schon 4 durchgänge). Ist aber anscheinend nicht so, wo liegt da der Denkfehler? Verstehe es weiterhin nicht zu 100%

0
xYurisha  06.01.2022, 00:37
@lollo939l

Wenn deine Schleife keine 4 Schritte geht, ist wahrscheinlich deine Abbruchbedingung nicht ganz richtig.

for(int i = 0; i<=3; i++){// das kleiner gleich gibt dem i die Bedingung das es kleiner oder gleich 3 sein muss, ergo du hast 4 Durchläufe da du ja bei 0 startest

//

}

für dein Beispiel für das bedeuten das der Rumpf deiner For-Schleife in etwa so aussehen müsste:

for(int i = 0; i<Main.vokabeln.length();i++)

Ohne den ganzen Code ist es allerdings alles schwer zu sagen. Du kannst ja den Teil hier nochmal reinposten

0