2012-10-10 39 views
1

如果我的斜率的分母是0,我該如何拋出一個異常,以便輸出「計算失敗,x1和x2之間沒有變化」...下面的塊是類文件中的一個方法。如何爲0除異常?

public double getSlope() { 
    double rise = p2.getY() - p1.getY(); 
    double run = p2.getX() - p1.getX(); 
    double slope = rise/run; 
    return slope; 
} 

我輸出的結果,我的測試文件,或包含一個main方法驅動程序類。

+2

'if(denominator == 0)//告訴用戶他不能被零除數' –

+0

但是有一個90度的斜率 – irreputable

+0

如果你不關心拋出什麼樣的異常,必須做任何事情:一個'ArithmeticException'將被拋出。 –

回答

4
if (run == 0) { 
    throw new IllegalArgumentException("Divide by zero error"); 
} 
+1

pssst - 劃分...;) – t0mm13b

+0

@ t0mm13b - 呵? – jahroy

+0

字符串中的拼寫...^xD – t0mm13b

1

扔你需要做到這一點例外:

public double getSlope() { 
    double rise = p2.getY() - p1.getY(); 
    double run = p2.getX() - p1.getX(); 
    if (run == 0) throw new Exception(
        "Calculation failed, there is no change between x1 and x2"); 
    double slope = rise/run; 
    return slope; 
} 

請注意,在方法的關鍵字throw,這將是從main方法顯然未捕獲的,因此會崩潰!

0

修改你的功能如下:

public double getSlope() throws DivideByZero{ 
    double rise = p2.getY() - p1.getY(); 
    double run = p2.getX() - p1.getX(); 

    if (run == 0) { 
     throw new MyException("Denominator is zero"); 
    } 

    double slope = rise/run; 
    return slope; 
} 

我的答案還需要創建一個名爲MyException一個自定義異常類。關於這樣做的細節僅供讀者參考。 (提示:谷歌是一個偉大的工具)

0

試試這個:

public double getSlope() throws Exception { 
    double rise = p2.getY() - p1.getY(); 
    double run = p2.getX() - p1.getX(); 
    if (run == 0) throw new Exception("Calculation failed."); 
    double slope = rise/run; 
    return slope; 
} 

public class TestLine { 
    public static void main(String[] args) { 
     try{ 
      l1.getSlope(); 
     } catch (Exception e) { 
      System.out.println(e.getMessage()); 
     } 
} 
1

你可以做

if(run == 0) { 
    throw new java.lang.ArithmeticException("Calculation failed, there is no change between x1 and x2"); 
} 
double slope = rise/run; 

此外,您還可以使用java.lang.IllegalStateException相反,如果它更有意義。

或者,java.lang.RuntimeException如果你只有消息是相關的。

1

當您除以零時,它會自動拋出一個名爲java.lang.ArithmeticException的異常。

如果你真的想拋出自己的異常,把你的信息或類似的東西,你可以爲波紋管:

if(run == 0) { 
    throw new ArithmeticException("Your message here"); 
} 

請注意,這是一個RuntimeException,你沒有義務來處理它。如果你想創建強制開發者處理的東西,你可以創建自己的異常,但我認爲情況並非如此。

+1

只適用於整數。 '1.0/0'不這樣做。 –

相關問題