0

郵便番号を取り込んで、その範囲に基づいて番号を割り当てる関数があります。いずれかの範囲に収まらない場合は失敗させたい。私は何をしますか?

/**
 * 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; 
}
4

2 に答える 2

1

いくつかのオプションがあります。

いずれの条件も満たされない場合は、1.例外をスローします。2. zipが無効であったことを意味することがわかっている特定の整数値を返します(例:-1)。3.整数の戻り型を使用する代わりに、ゾーンの列挙型を作成します。

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

次に、条件が満たされない場合はEndZone.Invalidを返します。

于 2012-05-07T00:46:27.957 に答える
1

何らかの理由で絶対にnullを返したい場合は、単純なことは、戻り型をintからIntegerオブジェクトに切り替えることです。これは、プリミティブとは異なり、nullになる可能性があります。

署名を次のように変更するだけです。

public static Integer endZone(int endZip)

および初期化:

Integer endZone = null;

しかし、実際には他の答えの方が優れています。

于 2012-05-07T01:03:11.717 に答える