2012-11-26 47 views
1

對於作業分配,我必須創建一個簡單的程序,它將兩個數字作爲參數並將它們相乘。如果其中一個數字爲零,程序將拋出一個ArithmeticException獲取算術異常來處理乘以零

當我閱讀文檔時,似乎總是覺得AritmeticException只能處理除以零錯誤和其他數學不可能的事情。但是,這個任務需要這個內置處理程序來完成這項工作,那麼如何讓它接受一個乘以零的錯誤?

到目前爲止我的代碼(被編碼到只有零和處理鴻溝其它「標準」的數學錯誤)

public class MultTwo { 

public static void main(String[] args) { 

    try { 
     int firstNum = Integer.parseInt(args[0]); 
     int secondNum = Integer.parseInt(args[1]); 
     System.out.println(firstNum*secondNum); 
    } 
    catch (ArithmeticException a) { 
     System.out.println("You're multplying by zero!"); 
    } 

}//end main 
}//end MultTwo Class 
+0

擲'ArithmeticException'如果任何值爲零。 –

回答

4

什麼

if (firstNum == 0 || secondNum == 0) { 
    throw new ArithmeticException("You're multplying by zero!"); 
} 

雖然這不是一個很好的做法我猜你的老師想給你看一些東西。

+0

基本上它。然後,我們繼續製作一個自定義Exception類,爲我們做到這一點。 現在我看到她正試圖向我們展示如何投擲作品。 – user1768884

+0

是的,所以我認爲在這方面取得成功。 – Kai

1

jvm絕對不會拋出ArithmeticException將任意數字乘以零,您必須明確地拋出它。

你可以這樣做:

try { 
    int firstNum = Integer.parseInt(args[0]); 
    int secondNum = Integer.parseInt(args[1]); 
    if(firstNum == 0 || secondNum == 0){ 
      throw new ArithmeticException(); 
    } 
    else{ 
      System.out.println(firstNum*secondNum); 
    } 
} 
catch (ArithmeticException a) { 
    System.out.println("You're multplying by zero!"); 
} 
3

當你想通了,該異常不會被自動在這種情況下拋出,所以你需要自己把它:

if (firstNum == 0 || secondNum == 0) { 
    throw new ArithmeticException("Numbers can't be null"); 
} 
//continue with the rest of your code. 

注意事項:

  • 你不需要趕ArithmeticException
  • 如果輸入不是有效整數,你應該可以捕獲NumberFormatException
1

算術系統決不會拋出一個乘以零的例外,因爲這是完全有效的,例如,

double res = 3.141 * 0.0; 

給出0.0。

相反,你需要檢測一個零點,如果你有,例如,

if (res == 0.0) { 
    throw new ArithmeticException("You have a zero"); 
} 

您可以檢查任一輸入爲零。你可以檢查你的結果爲零,因爲(理論上)如果一個或兩個輸入都爲零,你只能得到一個零輸出。但是,Java不能將數字存儲爲無限精度,而兩個非常小的輸入可能會產生零。例如

Double.MIN_NORMAL * Double.MIN_NORMAL 

給了我0.0

上述部分並不適用於Integers,所以你可以檢查你的結果在該場景中。

3

我知道你應該拋出異常,而不是處理它。喜歡的東西:

int multiply(int firstNum, int secondNum) 
{ 
    if(firstNum == 0 || secondNum == 0) 
     throw new ArithmeticException("Multplying by zero!"); 
    return firstNum * secondNum; 
} 
0

試試這個...................

import java.util.Scanner; 


public class T { 

    public static void main(String[] args) { 


      int firstNum = new Scanner(System.in).nextInt(); 
      int secondNum = new Scanner(System.in).nextInt(); 

      if (firstNum == 0 || secondNum == 0) { 

       throw new ArithmeticException("Numbers can't be zero"); 
      } 

      else{ 
      System.out.println(firstNum*secondNum); 
      } 



    } 

}