2016-09-12 1 views
0

Ich erstelle ein Programm, das die Eingabe vom Benutzer übernimmt. Jetzt möchte ich die Eingabeoption erneut ausführen, wenn ein Benutzer einen ungültigen Befehl eingibt. Wie hier ist nur eine ganzzahlige Eingabe bevorzugt, aber wenn der Benutzer Text eingibt, möchte ich die Ausnahme abfangen und die Methode erneut ausführen.Wie wiederhole ich eine Methode nach einer Ausnahme in Java?

Ich habe das versucht, aber es macht mich zu einer Endlosschleife. Was wäre der beste Weg, dies zu erreichen. Es wäre toll, wenn mir jemand dabei hilft.

boolean retry = true; 

    while(retry){ 

     try{ 
      //considering response from the user 
      System.out.print("\nEnter Your Command : "); 
      f_continue = processresponse(scanner.nextInt()); 
      retry = false; 
     }catch(InputMismatchException e){ 

      System.err.println("\nPlease Input a Valid Command from 1-5 or 0 for Exit"); 




     } 

    } 
+0

Sie können mehr über die Handhabung von Scanner-Eingabe hier lesen: http://StackOverflow.com/Questions/13102045/scanner-is-skip-nextline-after-using-next-nextint-oder-other-nextfoo – azurefrog

Antwort

1

Wenn Sie etwas anderes als eine ganze Zahl eingeben, wird nextInt() eine Ausnahme aus, und was eingegeben wurde, wird nach wie vor in den Eingangspuffer sein, so dass der nächste Mal, wenn Sie nextInt() aufrufen, werden Sie die gleichen schlechten Eingang lesen. Sie sollten zuerst hasNextInt() aufrufen, um zu sehen, ob die Eingabe eine Ganzzahl ist; Wenn nicht, rufen Sie einfach nextLine() an, um die fehlerhafte Eingabe zu überspringen (und eine Nachricht zu schreiben, die den Benutzer anweist, es erneut zu versuchen).

Oder Sie können einfach scanner.nextLine() im Catch-Block aufrufen.

+0

Es hat funktioniert. ...........Danke vielmals :) –

Verwandte Themen