【问题标题】:Handle Exceptions with Try Catch使用 Try Catch 处理异常
【发布时间】:2016-12-09 18:12:11
【问题描述】:

我是 java 新手,我正试图找出我的编码出了什么问题。每次我输入一个字母它都会崩溃?如下图。

读入一个标记

是的

请输入一个数字错误

输入下一个学生分数

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

我希望是这样的

读入标记

是的

请输入一个数字错误

输入下一个学生分数

4

【问题讨论】:

  • 在你说“读入标记”之后,你认为nextInt() 会做什么?

标签: java validation exception input try-catch


【解决方案1】:

在您的代码中,catch 仅适用于第一个用户输入。
您应该添加另一个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");
    } 

}  

【讨论】:

    猜你喜欢
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 2012-05-04
    • 1970-01-01
    • 2018-06-24
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多