我有一个方法被调用来验证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:更新了我的代码。
答案 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格式的地址