-3

我的程序接受用户的输入,第一个数字,操作(+ - * / ^)然后是第二个数字。当我输入 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);
4

2 回答 2

2

您的 if 语句中有一个杂散的分号。它应该是

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

代替

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

你所拥有的基本上是一样的

if (opperation == "/" && num2 == 0) {

}
throw new ArithmeticException();
于 2013-10-25T23:28:08.100 回答
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");
于 2013-10-25T23:28:19.057 回答