Wieso beendet sich das Java-Programm von selbst?
Hey, ich muss für die Schule ein sehr simples Vokabeltrainingsprogramm in Java schreiben, jedoch beendet es sich einfach von selbst, obwohl (soweit ich das sehe) der Code noch weitergeht an der Stelle.
Ich will, nachdem die Vokabeln einmal durchgefragt wurden, nur die falsch beantworteten nochmal abfragen.
Hier wird die Methode aufgerufen und hier die Klasse selbst (Main.vokabeln.length hat den Wert 4, Main.content ist ein Array, welches jede Zeile aus der angehängten Datei nimmt und in Main.content packt).
Aus irgendeinem Grund beendet sich das Programm irgendwo dazwischen mit Exit Code 0.
Kann sich das jemand (und am besten auch mir) erklären? Eigentlich sollte das Programm ganz normal weiterlaufen.
Vielen Dank schon mal im Voraus.
2 Antworten
Der Vergleich im if ist immer false, weil Du nicht vergleichst, sondern zuweist.
Verstanden, war warscheinlich ein Tippfehler.
Geändert hat sich aber nichts, das Programm beendet sich weiterhin an der gleichen Stelle...
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.
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)
Nein, es erlaubt, das Programm schrittweise auszuführen und zu checken, welche Variablen wie belegt sind.
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.
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%
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
Abgesehen davon, dass Eclipse eine IDE ist, finde ich den Tipp sehr gut.
Und wie kann ich die vergleichen?