2013-10-25 117 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");