2016-12-09 7 views
-2

Я новичок в java, и я пытаюсь понять, что не так с моей кодировкой. каждый раз, когда я вхожу в письмо, он падает? как показано ниже.Обработка исключений с Try Catch

Читайте в знак

у

Ошибка плз введите номер

Введите следующий студент отметки

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) 

Это мой код:

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(); 
    } 

Я ожидал, что это будет как этот

Читать в метке

у

Ошибка плз введите номер

Введите следующий знак студент

+3

После произнесения "читать знак", как вы думаете, 'nextInt()' делает? – chrylis

ответ

0

В вашем коде catch работает onl y для первого ввода пользователя.
Вы должны добавить еще catch для обработки InputMismatchException в следующих пользовательских вводах. В противном случае исключение будет увеличиваться, и вы оставите метод, если вход не является числом.

Попробуйте это:

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"); 
    } 

} 
Смежные вопросы