题目:
请您实现一个函数ISIP(String str),判断传入的字符串是否是个IP地址,并给出单元测试代码(JUnit或TestNG均可,将测试用例要周全)
代码:
public class Test {
public static void main(String[] args) {
// 测试
String ip1 = "0.104.105.48";
System.out.println(ip1 + "是正确的ip吗?" + isIP(ip1));
String ip2 = "012.204.165.48";
System.out.println(ip2 + "是正确的ip吗?" + isIP(ip2));
String ip3 = "342.204.165.48";
System.out.println(ip3 + "是正确的ip吗?" + isIP(ip3));
}
// IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。
public static boolean isIP(String str) {
// 判断输入值
if (str == null || "".equals(str.trim())) {
return false;
}
// 判断格式
String regex = "^(\\d{1,3}\\.){3}(\\d{1,3})$";
if (!str.matches(regex)) {
return false;
}
// 判断单个数字
String[] array = str.split("\\.");
for (String number : array) {
// 判断位数大于1位的数字是否以0开头
if (number.length() > 1 && number.indexOf("0") == 0) {
return false;
}
// 判断数字大小
if (Integer.parseInt(number) > 255) {
return false;
}
}
return true;
}
}
结果:
0.104.105.48是正确的ip吗?true
012.204.165.48是正确的ip吗?false
342.204.165.48是正确的ip吗?false