方法总是返回true?

时间:2015-04-10 17:09:24

标签: java

我有一个方法被调用来验证IP地址是否可分配。无论我传递给它,它总是返回true。我需要设置返回以使此方法正常工作?

public boolean checkValidIPClass(String x) {
    for (int i = 0; i < 4; i++) {
        try {
            if (retString.equals("A")) {
                if ((intParts[1] == 0) && (intParts[2] == 0) && (intParts[3] == 0))
                    return false;
                if ((intParts[1] == 255) && (intParts[2] == 255) && (intParts[3] == 255))
                    return false;
            }
            if (retString.equals("B")) {
                if ((intParts[2] == 0) && (intParts[3] == 0))
                    return false;
                if ((intParts[2] == 255) && (intParts[3] == 255))
                    return false;
            }
            if (retString.equals("C")) {
                if (intParts[3] == 0)
                    return false;
                if (intParts[3] == 255)
                    return false;
            }
        } //ends try
        catch (NumberFormatException nfe) {
            return false;
        } //ends catch
    } //ends for
    return true;
}

retString正在使用该方法,并且是从另一个方法返回的字符串,该方法检查IP地址是什么类并分配它,这是通过print语句验证的。谢谢!

编辑:这是如何得到回答和投票的?我的问题不是关于比较字符串,它是关于方法总是返回true,即使我知道if语句应该捕获错误并返回false?

EDIT2:更新了我的代码。

1 个答案:

答案 0 :(得分:2)

我不明白为什么你要做一个循环,但你可以试试这个:

public boolean checkValidIPClass(String ipClass, String ipAddress)
{
    if (ipClass.contentEquals("A"))
    {
        if (ipAddress.endsWith("0.0.0") || ipAddress.endsWith("255.255.255"))
            return false;
    }
    else if (ipClass.contentEquals("B"))
    {
        if (ipAddress.endsWith("0.0") || ipAddress.endsWith("255.255"))
            return false;
    }
    else if (ipClass.contentEquals("C"))
    {
        if (ipAddress.endsWith("0") || ipAddress.endsWith("255"))
            return false;
    }

    return true;
}

由于您只是检查IP地址的结束数组部分,因此您无需将其分解为数组,只需将其保留为字符串即可。

请记住,这只会满足IPv4格式的IP地址。它不适用于IPv6格式的地址