2011-04-11 55 views
0

如何編寫一個方法,該方法在方法內部返回一個基本數據類型值,該方法具有根據結果返回不同數據類型的if語句?在Java中返回一個值

int minimum = 5; 
int students = 4; 
int studentGrades = 100; 

public double getAverage(){ 
    if(students >= minimum){ 
     return studentGrades/students; 
    } 
    else { 
     System.out.println(null, "Sorry, you don't have enough students."); 
     return false; 
    } 
} 

回答

4

你不能真正返回n來自同一方法的兩種不同的基元類型。有了參考類型,你可以返回Object,這不是一個好主意。

return false看起來像一個錯誤情況,所以你可能會想到在這裏拋出一個異常:

public double getAverage(){ 
    if(students >= minimum){ 
     return studentGrades/students; 
    } 
    else { 
     throw new IllegalStateException("not enough students"); 
    } 
} 
2

在你給出的例子中,你應該拋出一個異常 - 對象的狀態基本上是無效的方法調用。您可能需要使用IllegalStateException,或選擇其他類型的例外。 (這一例外延伸RuntimeException,所以它不是一個檢查例外。可能會或可能不適合你的實際使用情況。)

(順便說一句,在你的示例代碼的劃分,都不會做什麼你想要麼 - 你要投一個操作數以double如果你想讓它執行浮點除法,而不是整數除法)

+0

對不起,但我該怎麼做?我仍然在學習這門語言。 – enchance 2011-04-11 07:05:30

+0

如果我沒有弄錯,這將是一個InvalidStateException – 2011-04-11 07:06:01

+0

@enchance:堆棧溢出不是一個真正的*學習*語言的好地方 - 當你不確定某個特定方面時,這是一個提出特定問題的好地方。我強烈建議你拿一本好的Java書,並從中學習大部分知識。異常的主題太大,不足以真正公正地回答這個問題。 – 2011-04-11 07:07:07

1

公共對象getAverage()

但你應該檢查返回類

0

可以作爲例子返回包含得分和成功的標誌的複合物。 或者在上述版本中,您可以返回Double.NaN來指示失敗。或者像其他人所建議的在失敗的情況下拋出異常。

0

我不是Java專家,但我認爲這裏最好的做法是拋出一個例外,如果你的學生數量少於所需的數量。如果你必須返回2個完全不同的值,我建議你將它們封裝在你自己的類中。

0

java方法只能有一個返回類型。所以你應該嘗試其他方式來處理這種情況。正如上面的其他人指出的,你可以拋出異常。或者你可以使用一個可爲空的數據類型,並在這個特殊條件爲真時返回null。但這是醜陋的,不推薦。