Neustarten des Codes nach der Fehlermeldung

Nico123

Mitglied
Hallo zusammen!

Ich möchte erreichen, dass mein Programm nach der Catch-Anweisung den Code wieder von vorne beginnt.
Im Moment ist es so, dass das Programm nach Ausführen der Catch-Anweisung einfach beendet wird.

Kann mir jemand helfen?

Danke schonmal im voraus!

Hier der Code:

Java:
import java.util.*;
import java.util.Scanner;


class Fibonacci
{
    static int fib(int n)
    {
        if (n <= 1)
        return n;
        return fib(n-1) + fib(n-2);
    }

    public static void main (String args[])
    {
        Scanner eingabe = new Scanner(System.in);
        try{

       
                while (true)
                    {
                        System.out.println(" ");
                        System.out.println("------------------------Fibonacci-Rechner----------------------------------- ");
                        System.out.print("Bitte geben Sie die Stelle an, die Sie ausgegeben haben möchten: ");
                        int s = eingabe.nextInt();
                        eingabe.nextLine();

                        int n = s;
                        System.out.println("--------------------------------------------------------------------------- ");
                        System.out.println("Die " + s + ". Stelle der Fibonacci-Reihe entspricht der Zahl: " + fib(n));
                        System.out.println("--------------------------------------------------------------------------- ");
                        System.out.println("B + Enter -------> Programm beenden.");
                        System.out.println("Nur Enter -------> Programm neu starten.");
                        System.out.print("Was möchten Sie tun? ");
                        if ("b".equalsIgnoreCase(eingabe.nextLine())) return;
                    }
           
            }
            catch(InputMismatchException e)
            {
                System.out.println("------------------------------------------------------------------------------------");
                System.out.println("FEHLER! Bitte eine Zahl eingeben! Programm neu starten!");
                System.out.println("------------------------------------------------------------------------------------");
            }
            finally
            {
                System.out.println("------------------------------------------------------------------------------------");
                System.out.println("Danke dass sie den Fibonacci-Rechner verwenden!");
                System.out.println("------------------------------------------------------------------------------------");
            }
    }
}
 
Zuletzt bearbeitet von einem Moderator:
K

kneitzel

Gast
Klappt, aber der code spielt, wenn man nastatt einer zahl etwas anderes eingibt, komplett verrückt
man muss die schleife also dann irgendwie anhalten
aber wie?
Was meinst Du "spielt .... komplett verrückt"?

Zum Beenden hast du ja
if ("b".equalsIgnoreCase(eingabe.nextLine())) return;

return verläßt die ganze Methode.
Man kann aber auch auf andere Art und Weise eine Schleife verlassen. break; wäre da z.B. noch.
Und last but not least - der Weg, den ich für relativ gut und übersichtlich halte: Man baut eine Abbruchbedingung in die while Schleife ein. Also sowas wie
Java:
boolean shouldRun=true;
while (shouldRun) {
    // Do something
    if (Abbruchbedingung) shouldRun=false;
    // Do something more
}
Oft lässt sich dies auch vereinfachen zu
Java:
while (!Abbruchbedingung) {
  // Do something
}
 

Nico123

Mitglied
Was meinst Du "spielt .... komplett verrückt"?

Zum Beenden hast du ja
if ("b".equalsIgnoreCase(eingabe.nextLine())) return;

return verläßt die ganze Methode.
Man kann aber auch auf andere Art und Weise eine Schleife verlassen. break; wäre da z.B. noch.
Und last but not least - der Weg, den ich für relativ gut und übersichtlich halte: Man baut eine Abbruchbedingung in die while Schleife ein. Also sowas wie
Java:
boolean shouldRun=true;
while (shouldRun) {
    // Do something
    if (Abbruchbedingung) shouldRun=false;
    // Do something more
}
Oft lässt sich dies auch vereinfachen zu
Java:
while (!Abbruchbedingung) {
  // Do something
}
die schleife läuft dann ohne zu stoppen unendlich mal durch
 

temi

Top Contributor
Ist das noch aktuell?
Java:
class Fibonacci {

    static int fib(int n) {
        if (n <= 1) return n;
        return fib(n-1) + fib(n-2);
    }

    public static void main (String args[]) {
        Scanner eingabe = new Scanner(System.in);
        try {
            while (true) {
                System.out.println(" ");
                System.out.println("------------------------Fibonacci-Rechner----------------------------------- ");
                System.out.print("Bitte geben Sie die Stelle an, die Sie ausgegeben haben möchten: ");
                int s = eingabe.nextInt();
                eingabe.nextLine();

                int n = s;

                System.out.println("--------------------------------------------------------------------------- ");
                System.out.println("Die " + s + ". Stelle der Fibonacci-Reihe entspricht der Zahl: " + fib(n));
                System.out.println("--------------------------------------------------------------------------- ");
                System.out.println("B + Enter -------> Programm beenden.");
                System.out.println("Nur Enter -------> Programm neu starten.");
                System.out.print("Was möchten Sie tun? ");
                if ("b".equalsIgnoreCase(eingabe.nextLine())) return;
            }
        }

        catch(InputMismatchException e) {
            System.out.println("------------------------------------------------------------------------------------");
            System.out.println("FEHLER! Bitte eine Zahl eingeben! Programm neu starten!");
            System.out.println("------------------------------------------------------------------------------------");
        }
      
        finally {
            System.out.println("------------------------------------------------------------------------------------");
            System.out.println("Danke dass sie den Fibonacci-Rechner verwenden!");
            System.out.println("------------------------------------------------------------------------------------");
        }
    }
}
 
Zuletzt bearbeitet:

Nico123

Mitglied
Ist das noch aktuell?
Java:
class Fibonacci {

    static int fib(int n) {
        if (n <= 1) return n;
        return fib(n-1) + fib(n-2);
    }

    public static void main (String args[]) {
        Scanner eingabe = new Scanner(System.in);
        try {
            while (true) {
                System.out.println(" ");
                System.out.println("------------------------Fibonacci-Rechner----------------------------------- ");
                System.out.print("Bitte geben Sie die Stelle an, die Sie ausgegeben haben möchten: ");
                int s = eingabe.nextInt();
                eingabe.nextLine();

                int n = s;

                System.out.println("--------------------------------------------------------------------------- ");
                System.out.println("Die " + s + ". Stelle der Fibonacci-Reihe entspricht der Zahl: " + fib(n));
                System.out.println("--------------------------------------------------------------------------- ");
                System.out.println("B + Enter -------> Programm beenden.");
                System.out.println("Nur Enter -------> Programm neu starten.");
                System.out.print("Was möchten Sie tun? ");
                if ("b".equalsIgnoreCase(eingabe.nextLine())) return;
            }
        }

        catch(InputMismatchException e) {
            System.out.println("------------------------------------------------------------------------------------");
            System.out.println("FEHLER! Bitte eine Zahl eingeben! Programm neu starten!");
            System.out.println("------------------------------------------------------------------------------------");
        }
     
        finally {
            System.out.println("------------------------------------------------------------------------------------");
            System.out.println("Danke dass sie den Fibonacci-Rechner verwenden!");
            System.out.println("------------------------------------------------------------------------------------");
        }
    }
}
Ja
 

temi

Top Contributor
Zuletzt bearbeitet:

Nico123

Mitglied
Das passt aber nicht zusammen. Hast du jetzt das try/catch in der Schleife oder ist es wie im gezeigten Code?

Edit: Die andere Frage ist: Warum fragst du und änderst, nachdem du Tipps erhältst, nichts am ursprünglichen Code?

Wieso sollte der dann plötzlich anders funktionieren?
Ich habe es wieder zurück-verändern, weil es mit dem Tipp nicht richtig funktioniert hat. Falls ich also andere Tipps bekomme kann ich sie direkt umsetzen und muss meinen Code nicht wieder umändern. Außerdem ist so der Code in meiner beschreibung immer aktuell.

Edit: Ich habe den Tipp angenommen und meinen Code geändert. Da es nicht richtig funktioniert hat, hab ich den Code wieder zurückgesetzt.
 
K

kneitzel

Gast
Also paar Anregungen / Hinweise:
a) Versuche try Blöcke nicht unnötig groß zu machen. Dir geht es da ja nur darum, die Exception bei nextInt() anzufangen....
b) Wenn Du eine Exception abfängst, musst Du überlegen, was da dann Sinnvoll ist. Du weisst: Es ist etwas eingegeben worden, was keine Zahl ist -> Was könnte man da machen, um diese Zeichen raus zu kriegen? (=> Schau auch im anderen Thread nach. Da hatten wir ja ein ähnliches Thema!)
c) Unterteile Deinen Code! Wenn die Methode jetzt schon zu groß ist, als das Du den Überblick behalten kannst, dann mach doch separate Methoden für diverse Dinge. So könnte man eine Methode schreiben, die Abfragt, ob weiter gemacht werden soll. Oder eine Methode, die eine Zahl abfragt. Durch sowas bekommst Du kleine Teile, die evtl. einfacher für dich zu testen sind.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
K Batches überwachen und ggf. neustarten Allgemeine Java-Themen 5
P Thread starten / stoppen / neustarten Allgemeine Java-Themen 8
E Applet neustarten Allgemeine Java-Themen 2
T App updaten und neustarten Allgemeine Java-Themen 18
V Java-Programm richtig neustarten? Allgemeine Java-Themen 9
G Prozesse überwachen und neustarten Allgemeine Java-Themen 3
U Programm soll sich nach update neustarten Allgemeine Java-Themen 30
V Thread schlafen lassen oder neustarten? Allgemeine Java-Themen 9
T Herunterfahren oder Neustarten der verschiedenen OS Allgemeine Java-Themen 11
I Thread neustarten Allgemeine Java-Themen 11
parrot Verständnis des Codes Allgemeine Java-Themen 3
D Bezüglich Design meines Codes Allgemeine Java-Themen 1
G Stil-und Lesbarkeit des Codes Allgemeine Java-Themen 18
B Ungewollte mehrmalige ausführung des codes Allgemeine Java-Themen 10
C QR-Codes erzeugen. Allgemeine Java-Themen 43
x22 Unterstreichen eines Consolen-codes Allgemeine Java-Themen 6
X [Java] Internationalisierung / Language codes bestimmen Allgemeine Java-Themen 4
V Eclipse braucht ewig zum Starten meines Codes Allgemeine Java-Themen 21
H Speicherstruktur für beliebige Bit-Codes Allgemeine Java-Themen 2
K umwandeln des codes um eine .jar datei zu erstellen(am bsp.) Allgemeine Java-Themen 10
H teile eines codes überspringen Allgemeine Java-Themen 4
M Problem mit bestimmten ASCII Codes Allgemeine Java-Themen 3
Ernesto95 HTTP Mit JavaScript erzeugte dynamische Webseite auslesen und nach einem Schlüsselwort durchsuchen Allgemeine Java-Themen 6
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
I 2D-Grafik Vektor-Grafik über die Zwischenablage nach Adobe Illustrator transferieren Allgemeine Java-Themen 8
M Suche nach String mit unbekannten characters Allgemeine Java-Themen 53
L 2 Dimensionale ListArray Abfrage nach einem Wert suchen Allgemeine Java-Themen 5
torresbig Url nach Webseiten-Login auslesen & Daten an Webseite senden Allgemeine Java-Themen 9
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
OnDemand Ram Freigabe erfolgt nicht nach Prozessende Allgemeine Java-Themen 18
G Geotools Probleme nach PC-Wechsel Allgemeine Java-Themen 6
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
E Variablen Nach Übergabe einer Variable den Constructor aufrufen Allgemeine Java-Themen 16
I In Java geschriebene Software nach Mac OS portieren Allgemeine Java-Themen 7
M TicTacToe Sound nach jedem Zug Allgemeine Java-Themen 21
I HTML / XHTML Seite nach Excel exportieren. Suche Lib Allgemeine Java-Themen 12
J4n5chmiddi Methoden Website-URL im Browser öffnen nach erfolgreicher Basisauthentifizierung in Java Allgemeine Java-Themen 12
pkm Frage nach eventuellem syntaktischen Zucker bei der Konkatenation von ArrayLists Allgemeine Java-Themen 4
Monokuma String List nach Zahlen und Worten sortieren Allgemeine Java-Themen 9
H Collections Aktuellen Index generell und nach Sortierung ausgeben Allgemeine Java-Themen 6
Kirby.exe Filename nach bestimmtem Pattern durchsuchen Allgemeine Java-Themen 5
S Wörterliste nach Wörtern mit u durchsuchen und diese auf der Konsole ausgeben lassen Allgemeine Java-Themen 33
W Pdf verwerfen, weil Checkbox nach Unterschrift geaendert wurde Allgemeine Java-Themen 5
G File not found - nach dem Kompilieren Allgemeine Java-Themen 6
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
Meeresgott Effizientester Weg um nach der Value einer verschachtelten Map aufzulösen Allgemeine Java-Themen 5
M Java 8 nach Java 6 konvertieren Allgemeine Java-Themen 7
L Nach dem Login // Java Desktop Software Allgemeine Java-Themen 7
F Java Code ausführen direkt nach Anmelden in Windows Allgemeine Java-Themen 2
J Jasper Reports - Compilerproblem nach Umstellung von Groovy auf Java Allgemeine Java-Themen 7
looparda Liste filtern nach Prädikaten verschiedener Typen Allgemeine Java-Themen 3
S Apache POI Filtern nach bestimmten Kriterium Allgemeine Java-Themen 1
L Korrektur nach der Berechnung vornehmen, aber wie? Allgemeine Java-Themen 11
C Config nach bestimmten Wertdurchsuchen. Allgemeine Java-Themen 2
B Suche nach einem Testprogramm für meine BA Allgemeine Java-Themen 0
B Maven Keycloak library wirft exceptions nach maven package Allgemeine Java-Themen 1
D BufferedReader bricht nach 1248 Iterationen ab Allgemeine Java-Themen 14
G Eclipse Java findet MySQL Driver nach export nicht mehr Allgemeine Java-Themen 2
H IDEA IntelliJ Java Mail funktioniert nach Export nicht mehr! Allgemeine Java-Themen 1
F Zurnung nach Buchstaben und deren Prüfung Allgemeine Java-Themen 9
M Dateien nach kopieren vergleichen Allgemeine Java-Themen 9
MiMa Sortieren nach Stellenangaben Allgemeine Java-Themen 7
L Erste Schritte Liste von Datums filter nach Monate Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
J Ausgabe von Links nach Rechts ausgeben? Allgemeine Java-Themen 2
K JAR Datei Corrupt nach Kopieren Allgemeine Java-Themen 4
The Pi 2D-Grafik Tic Tac Toe nach Gewinn rot Allgemeine Java-Themen 1
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
C PDFBox: Nach RegEx ganze Zeile Allgemeine Java-Themen 4
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
L Suche nach CalDav Server API Allgemeine Java-Themen 0
K Java ruft Methoden nicht der Reihe nach auf Allgemeine Java-Themen 14
T Textarea nach nur 1 wort durchsuchen Allgemeine Java-Themen 3
D Methoden Buttons erscheinen doppelt nach Wiederholung in Schleife Allgemeine Java-Themen 1
I nach Image Load in ListView, kann Ordner nicht mehr gelöscht werden Allgemeine Java-Themen 1
K Auf einer Website nach einem String suchen Allgemeine Java-Themen 5
C Eclipse OutOfMemory nach dem exportieren Allgemeine Java-Themen 4
D Erste Schritte Array von einer forschleife nach ausserhalb trasferieren Allgemeine Java-Themen 3
VfL_Freak Große und seltsame Probleme nach Java-Update auf V1.8.0_91 Allgemeine Java-Themen 3
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
D Java Datei nach Eclipse Export funktioniert nicht Allgemeine Java-Themen 0
B Bild aus Jar kann nach Export nicht mehr gefunden werden Allgemeine Java-Themen 13
B Umgebungsvariable Anpassen der Umgebungsvariablen nach Java-Update ? Allgemeine Java-Themen 14
H jid3lib nach schreiben keine Tags im Folder angezeigt Allgemeine Java-Themen 1
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
KilledByCheese Dezimal nach Hexadezimal rechner wirft seltsame exception Allgemeine Java-Themen 4
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
E Java wird beendet nach paar Sekunden Allgemeine Java-Themen 14
H Best Practice setHeader in jsp nach RequestDispatcher.include Allgemeine Java-Themen 0
L Nach Button drücken den Text festspeichern Allgemeine Java-Themen 9
M .jar nach Datei prüfen Allgemeine Java-Themen 2
F String nach Schlüsselwörtern durchsuchen und ganze Zeile ausgeben Allgemeine Java-Themen 4
HarleyDavidson Input/Output Heruntergeladene Datei direkt nach dem Download öffnen ohne zu speichern Allgemeine Java-Themen 1
J Swing Cursor.WAIT funktioniert nicht nach JFileChooser Allgemeine Java-Themen 1
VfL_Freak JDK installieren Problem mit Erstellungspfad nach Wechsel von Java7 auf Java8 Allgemeine Java-Themen 1
B Eclipse Nach Export einer .jar Fehler: Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 5
thet1983 nach teilen eines Dateinamens suchen Allgemeine Java-Themen 6
F JLabel nach 5 Sekunden wieder leeren Allgemeine Java-Themen 7
M Fasta nach Mustern durchsuchen dauert zu lange Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben