2013-10-25 3 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

Этот вопрос, как представляется, не по теме, потому что это еще одна точка с запятой после Условный оператор –

+1

Кроме того, на вершине, что tbodt и я сказал, см. http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java –

ответ

2

У вас есть паразитная точка с запятой в вашем if-statement. Он должен быть

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"); 
Смежные вопросы