2016-12-09 3 views
-2

Ich bin neu bei Java und ich versuche herauszufinden, was mit meiner Codierung falsch läuft. Jedes Mal, wenn ich einen Brief einlege, stürzt es ab? Wie nachfolgend dargestellt.Handle Ausnahmen mit Try Catch

lesen in einer Markierung

y

Fehler plz geben Sie eine Nummer

Geben Sie die nächste Studentenmarke

Exception in thread "main" java.util.InputMismatchException 

    at java.util.Scanner.throwFor(Scanner.java:864) 
    at java.util.Scanner.next(Scanner.java:1485) 
    at java.util.Scanner.nextInt(Scanner.java:2117) 
    at java.util.Scanner.nextInt(Scanner.java:2076) 
    at histogram.Histogram.main(Histogram.java:95) 

bC:\Users\Chevon\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1 
    BUILD FAILED (total time: 2 seconds) 

Dies ist mein Code:

int cat1 = 0;// Category 1 
    int cat2 = 0;// Category 2 
    int cat3 = 0;//Category 3 
    int cat4 = 0;//Category 4 
    int mark = 0;// Total marks that the user enters 
    int counter = 0; 
    double Average = 0; 
    int Total_mark = 0; 
    int pass=0; 
    int highest = 0; 
    int lowest = 101; 

    Scanner input = new Scanner(System.in); 
    System.out.println("Read in a mark"); 
    try{ 
     mark= input.nextInt(); 
     System.out.println("The number you enter is "+mark); 
    }catch(InputMismatchException e){ 
     System.out.println("Error plz enter a number"); 

    } 
    while(mark<0){ 
     System.out.println("Enter a positive integer"); 
     mark = input.nextInt(); 
    } 

erwartete ich es wie dieses

lesen in mark

y

Fehler plz geben Sie eine Nummer

Geben Sie nächste Schüler Zeichen

+3

Nachdem Sie sagen "lesen in Zeichen", was denken Sie 'nextInt()' tut? – chrylis

Antwort

0

sein In Ihrem Code funktioniert die catch nur y die für die erste Benutzereingabe.
Sie sollten eine weitere catch hinzufügen, um die InputMismatchException in den nächsten Benutzereingaben zu behandeln. Andernfalls wird die Ausnahme ausgelöst und Sie verlassen die Methode, wenn die Eingabe keine Zahl ist.

Versuchen Sie das mal:

try{ 
    mark= input.nextInt(); 
    System.out.println("The number you enter is "+mark); 
} 
catch(InputMismatchException e){ 
    System.out.println("Error plz enter a number"); 
} 

while(mark<0){ 
    try{ 
     System.out.println("Enter a positive integer"); 
     mark = input.nextInt(); 
    } 
    catch(InputMismatchException e){ 
     System.out.println("Error plz enter a number"); 
    } 

}