2016-12-09 91 views
-2

我是新来的java,我想弄清楚我的代码出了什么问题。每次我输入一封信都会崩溃?如下所示。处理例外与Try Catch

读入的标志

Ÿ

错误PLZ输入号码

进入下一个学生马克

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

我希望它是这样

读入标志

Ÿ

错误PLZ输入号码

进入下一个学生马克

+3

后你说 “读标志”,你怎么看'nextInt()'呢? – chrylis

回答

0

在你的代码中,catch可以工作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"); 
    } 

}