2017-04-14 4 views
0

Ich bekomme java.util.InputMismatchException jedes Mal, wenn ein Brief eingegeben wird. Ich möchte, dass die "falsche Nachricht" angezeigt wird und nicht abstürzt. Ich habe versucht, x eine Zeichenfolge zu machen und die Eingabe zu analysieren, aber das Problem war immer noch das gleiche. Nicht ganz sicher, wie das geht. Hier ist mein Code:java.util.InputMismatchException in meiner Integer-Validierungsmethode

public static void generateDivision() { 

    Random rand4 = new Random(); 
    Scanner keyboard6 = new Scanner(System.in); 

    int random = rand4.nextInt(12); 
    int random2 = rand4.nextInt(12); 

    //Following two lines ensures that no remainders are present so the numbers divide evenly. 
    int n = random * random2;    
    int k = n/random;     

    System.out.println(n + "/" + random + " = ?"); 
    int x = keyboard6.nextInt(); 

    checkUserAnswer(k, x); 
} 
public static void checkUserAnswer(int n, int x) { 

    try { 
     if (n == x) { 

      System.out.println("Correct!"); 
      System.out.println(); 


     } 
     if (n != x) { 

      System.out.println("Incorrect!"); 
      System.out.println(); 


     } 
    } catch (InputMismatchException e) { 
     System.out.println("Incorrect! That was not a number."); 

    } 
    updateStats(n, x); 
    tryAgain(); 

    } 
+0

Wenn es nur einen Weg gab, etwas zu versuchen und dann Ausnahmen zu erfassen und etwas in diesen Fällen zu tun ... fast wie beschrieben [hier] (https://docs.oracle.com/javase/tutorial/essential/ exceptions /) – csmckelvey

+0

Ich habe versucht, einen try-catch-Block zu verwenden, aber es zeigt immer noch den Fehler an statt eine "falsche" Nachricht zu drucken – Navi4458

+0

Das ist nicht der try/catch-Block - das Problem ist, wie Sie es codiert haben. Vielleicht können wir erklären, warum das der Fall ist, wenn Sie uns diesen Code gezeigt haben. – csmckelvey

Antwort

0

Sie sollten einen try/catch-Block in Ihrem Code verwenden, zB:

try 
{ 
    //Code to do 
}catch(InputMismatchException ex) 
{ 
    System.out.print("Sorry, try entering another value"); 
} 

Sie setzen alle Ihre Eingabe Code im try-Block und wenn es fehlschlägt Sie fangen es mit dem catch-Block gibt es die bestimmte Ausnahme, die Sie in diesem Fall wollen, ist es die InputMismatchException. Hoffe, das hilft :)

+0

Ich habe gerade versucht, dies zu tun. Als ich es getestet habe. Der Fehler wird weiterhin angezeigt und meine Nachricht wird nicht angezeigt. – Navi4458

+0

Kannst du den Code, den du mit dem try catch block hast, bitte posten? – Aaron

+0

Ich habe gerade die Frage mit dem, was ich gerade versucht habe, aktualisiert. – Navi4458

0

Die Funktion nextInt() erwartet immer eine int Eingabe, und wird eine Ausnahme auslösen, wenn der Benutzer etwas eingibt, das kein int ist.

Sie könnten die try-catch-Syntax verwenden, um die InputMismatchException abzufangen und anstatt die Ausnahme auszulösen, eine Nachricht an den Benutzer zu liefern. Oder Sie könnten Benutzereingaben als String (vielleicht nextLine()) vornehmen und die int/entsprechenden Fehlermeldungen selbst analysieren. Es ist jedoch nicht sinnvoll, das Rad neu zu erfinden. Daher ist die Verwendung der integrierten Analyse nextInt() und der try-catch die sauberere Option.

Wenn Sie ein Intro zur Behandlung von Ausnahmen mit try-catch möchten, kann the Java doc hilfreich sein.

Verwandte Themen