2016-03-26 9 views
-1

Ich habe ein Problem mit meinem Versuch/Catch-Anweisung. Ich weiß, es ist wahrscheinlich eine einfache Lösung, aber ich bin neu in Java. Hier möchte ich die Konsole den Benutzer auffordern, ihre erste Einzahlung hinzufügen, zum Beispiel, wenn ich etwas wie "Hallo" eingeben das Programm wird abstürzen, anstatt erneut zu fragen? Dankversuchen und fangen nicht funktioniert

hier sind die Fehler Ich erhalte: Exception in thread "main" java.util.InputMismatchException bei

java.util.Scanner.throwFor (Unknown Source)

auf Java. util.Scanner.next (Unknown Source)

bei java.util.Scanner.nextInt (Unknown Source)

bei java.util.Scanner.nextInt (Unknown Source)

System.out.println("Please enter an initial deposit:"); 
      try{ 

       deposit.add(keyboard.nextInt()); 

      }catch(NumberFormatException e){ 

       System.out.println("Invalid input"); 

      System.out.println("Please enter an account number:"); 
      accountNumber.add(keyboard.nextDouble()); 
+3

fehlt eine Schließung zu fangen? 'catch (NumberFormatException e) {System.out.println (" Ungültige Eingabe ");} /*...*/ System.out.println (" Bitte geben Sie eine Kontonummer ein: "); ' –

+0

Erhalten Sie irgendwelche Fehler? Wenn ja, was sind sie? –

+0

Hast du überprüft, welche Ausnahme du bekommen hast? Wenn Sie beispielsweise eine Ausnahme im Thread "main" java.util.InputMismatchException erhalten, können Sie die Verwendung von NumberFormatException nicht abfangen. – Suparna

Antwort

2

nach docs

Methode nextInt wirft InputMismatchException nicht Number

schreiben:

catch(InputMismatchException e){ 
     .... 

UPDATE: Ich benutze diese Schnipsel und inputing Nummer funktioniert

public static void main(String[] args) { 

    Scanner keyboard = new Scanner(System.in); 

    System.out.println("Please enter an initial deposit:"); 

    try { 
     int numberEntered = keyboard.nextInt(); 
     System.out.println(numberEntered); 

    } catch (InputMismatchException e) { 

     System.out.println("Invalid input"); 

     System.out.println("Please enter an account number:"); 
    } finally { 
     keyboard.close(); 
    } 
} 

Konsole:

Please enter an initial deposit: 
55 
55 

Process finished with exit code 0 
+0

Dies verbessert es ein wenig. es zeigt tatsächlich "ungültigen Eingang" jedoch weiterhin "bitte geben Sie eine Kontonummer" und stürzt dann mit "Ausnahme im Thread" –

+0

Ich erweiterte die Antwort, hoffe es hilft Ihnen, Ihren Code zu debuggen – tjago

1
  1. Sie sind nicht die Ausnahme bekommen Sie gefangen haben. Im Gegenteil, Sie erhalten InputMismatchException.

  2. Da Sie versuchen, innerhalb der catch-Anweisung erneut Eingaben zu erhalten, müssen Sie ungültige Eingaben erneut eingeben. Aber wer fängt diese Ausnahme an? Niemand. Daher wird Ihr Programm beendet. Außerdem sehe ich keinen Code jenseits dieser Zeile. Daher kann es auch ein normaler Ausgang sein.

0

Die erste Klammer fehlt. Ich denke nach dem println ("Invalid Input") ;.

Wenn es funktioniert immer noch nicht versuchen, alle Arten von Fehlern Klammer catch(Exeption e){...}

Verwandte Themen