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

如果出于某种原因您绝对想要返回 null,那么简单的方法是将返回类型从 int 切换为 Integer 对象,与原始对象不同,它可以为 null。

只需将签名更改为:

public static Integer endZone(int endZip)

并初始化为:

Integer endZone = null;

但实际上其他答案更好。

于 2012-05-07T01:03:11.717 回答
1

你有几个选择:

如果不满足任何条件,则 1. 抛出异常。2. 返回一个特定的整数值,您知道该整数值表示 zip 无效(例如 -1)。3. 不要使用整数返回类型,而是为您的区域创建一个枚举:

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

如果条件不满足,则返回 EndZone.Invalid。

于 2012-05-07T00:46:27.957 回答