尝试并捕获打印错误

时间:2013-10-25 23:24:11

标签: java

我的程序从用户输入输入,第一个数字,操作(+ - * / ^)然后是第二个数字。当我输入5/0时,它说错误!不能除以0。这就是它应该做的事情。但是,当我键入5/5即1时,我收到了错误消息。

do {
    try {
        if (opperation == "/" && num2 == 0);
        throw new ArithmeticException();
    } catch (ArithmeticException ae) {
        System.out.println("ERROR !!! Cannot divide by 0");
    }
    System.out.println("Enter First Number");
    num1 = scan.nextInt();
    System.out.println("ENTER Opperation: ");
    opperation = scan.next();
    System.out.println("ENTER Second Number: ");
    num2 = scan.nextInt();
} while (num2 == 0);

2 个答案:

答案 0 :(得分:2)

你的if语句中有一个迷路分号。它应该是

if (opperation == "/" && num2 == 0)
    throw new ArithmeticException();

而不是

if (opperation == "/" && num2 == 0);
    throw new ArithmeticException();

你所拥有的与

基本相同
if (opperation == "/" && num2 == 0) {

}
throw new ArithmeticException();

答案 1 :(得分:1)

if声明后,您不应该使用分号。这使得if语句的主体变成了什么。将其更改为:

if (opperation == "/" && num2 == 0)
    throw new ArithmeticException();

您的IDE似乎已经抓住了这个并以错误的方式为您重新创建了代码。

顺便说一句,这不是你使用ArithmeticException的方式。除以0的代码行将自动抛出ArithmeticException,然后您可以捕获它。但是,这比完全不使用ArithmeticException要慢:

if (opperation == "/" && num2 == 0)
    System.out.println("ERROR !!! Cannot divide by 0");