2016-01-11 75 views
0

我有一個我在java類中定義的Fraction對象。我需要能夠用我創建的分數進行數學運算。當我用未定義的分數進行數學計算時,我需要返回null。我的問題是,當用戶不知道null返回並試圖做一個設置爲null的Fraction對象的數學運算。調用運算符時出現NullPointerException

例如。

Fraction f1=null; 
Fraction f2=new Fraction(1, 2); 
Fraction f3=f1.add(f2); 

這會給我一個錯誤。但是當我這樣做時,沒有錯誤。

Fraction f1=null; 
Fraction f2=new Fraction(1, 2); 
Fraction f3=f2.add(f1); 

這不會錯誤,而是將返回null。

爲什麼頂部的示例錯誤以及如何強制它返回null?此外,檢查分數是否爲零不能在我的測試程序中發生,它必須發生在Fraction類中。 添加運算符工作得很好。當Fractions對象等於null時,我只想讓它返回null。

+2

頂部示例失敗,因爲'f1'爲空,您無法在空值上調用函數。你可以做的是用一個靜態函數替換你的函數,該函數測試兩個操作數 – njzk2

+0

你不能。在空引用上調用方法是一個錯誤,並且總是會導致NPE。 –

+0

你想在第二個例子中分數f3返回null嗎? – Scitech

回答

2

調用null對象上的方法始終以NullPointerException結尾。

4

由於無法調用null對象的方法,因此您所要做的事是不可能的。嘗試它總是會產生異常。但是,如果這是真的對你很重要,你可以改變API的靜態方法有兩個參數:

public static Fraction add(Fraction f1, Fraction f2) 

現在你可以在案件的參數之一是null返回null

相關問題