例外不会打印消息

时间:2016-05-23 21:25:46

标签: java exception-handling

InputMisMatch Exception

在Java中。我有用户输入两个数字,如果它们不相同,则输入不匹配异常将打印出一条消息。但是它没有打印消息。我做错了什么。

package Day4;
import java.util.InputMismatchException;
import java.util.Scanner;

public class Calculator {
    int num1 = 0;
    int num2 = 0;



    void add(){

        Scanner sc = new Scanner(System.in);
        System.out.println("enter two numbers:");
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();



        try {
            try{

                System.out.println(num1 + num2);

            }
            catch(InputMismatchException e)
                {
                num1 = sc.nextInt();
                num2 = sc.nextInt();
                System.out.println("Invalid Character");
             }


           }
            catch (ArithmeticException ae)
             {
                System.out.println("Invalid Number Try again");

               } 
        }






       public static void main(String[] args) {

        Calculator c = new Calculator();
        c.add();
        // TODO Auto-generated method stub

     }

}

1 个答案:

答案 0 :(得分:0)

首先,我建议您阅读有关try和catch块如何工作以及如何工作的信息。

所以根据你的代码,我假设你想阻止用户输入非整数

现在回答:

抛出异常的代码行是:

int num1 = sc.nextInt();
int num2 = sc.nextInt();

System.out.println( num1 + num2 );

所以正确的做法是:

System.out.println( "enter two numbers:" );

try {
    int num1 = sc.nextInt();
    int num2 = sc.nextInt();

   System.out.println( num1+num2 );

}
catch(InputMismatchException e){
    System.out.println("Invalid Character");
}

由于两者都已经 int

,因此不会抛出AritmethicException