2013-10-25 50 views
-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); 
+5

这个问题似乎是题外话,因为它是又一个分号后if语句 –

+1

此外,在什么tbodt和我说上面,请参阅http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java –

回答

2

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

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

代替

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

你有什么基本上是同样的事情

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

} 
throw new ArithmeticException(); 
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");