2012-05-07 152 views
0

我有一個函數,需要在一個郵政編碼,並根據它所屬的範圍分配一個數字。如果它不屬於其中一個範圍,我希望它失敗。我該怎麼辦?簡單的答案需要:返回函數,返回null

/** 
* Calculates zone number from second zip code 
* @param endZip 
* @return endZone 
*/ 
public static int endZone(int endZip) 
{ 
    int endZone = 0; 

    //zone 1 
    if (endZip >= 00001 && endZip <= 6999) 
    { 
     endZone = 1;  
    } 

    //zone 2 
    else if (endZip >= 07000 && endZip <= 19999) 
    { 
     endZone = 2; 
    } 

    //zone 3 
    else if (endZip >= 20000 && endZip <= 35999) 
    { 
     endZone = 3; 
    } 

    //zone 4 
    else if (endZip >= 36000 && endZip <= 62999) 
    { 
     endZone = 4; 
    } 

    //zone 5 
    else if (endZip >= 63000 && endZip <= 84999) 
    { 
     endZone = 5; 
    } 

    //zone 6 
    else if (endZip >= 85000 && endZip <= 99999) 
    { 
     endZone = 6; 
    } 

    return endZone; 
} 
+0

0是否爲有效的「endZone」?您的代碼當前返回,如果郵政編碼不在您的範圍內。你的來電可以檢查嗎?最後,它可能更重要的是他們調用的代碼看起來像這個 –

+0

0應該不是有效的 – user1378762

+0

在這種情況下,調用者可以只做「int ez = endZone(zip); if(ez> 0){//無錯誤案例}其他{//錯誤案例}「與寫入的方法一樣。 –

回答

1

如果由於某種原因您完全想要返回null,那麼簡單的事情就是將返回類型從int切換到Integer對象,這與primitives可以爲null。

簡單的簽名改爲:

public static Integer endZone(int endZip) 

和初始化:

Integer endZone = null; 

但實際上其他答案是更好的。

1

您有幾種選擇:

如果沒有一個條件得到滿足, 1拋出一個異常。 2.返回您知道的特定整數值,表示該zip無效(例如-1)。 3.不要使用整數返回類型,爲您的區域創建一個枚舉:

public enum EndZone 
{ 
    Zone1, 
    Zone2, 
    .... 
    Invalid 
} 

然後返回EndZone.Invalid如果條件得不到滿足。

+0

我將如何拋出異常? (我剛剛開始編寫代碼) – user1378762

+0

根據您的代碼,我假設您使用的是Java。有許多網站致力於解釋異常如何工作(嘗試使用googling java拋出異常)。 – kad81

+0

關於這種情況是否應該拋出異常的一個很好的討論可以在這裏找到:http://stackoverflow.com/questions/77127/when-to-throw-an-exception – kad81