判斷IP地址有效性
import java.util.Scanner;
public class ipAddress {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
boolean isLegal = isIP(str);
if(isLegal){
System.out.println(str + "是合法的");
}else{
System.out.println(str + "不是合法的");
}
}
public static boolean isIP(String s) {
if (s == null) return false;
if (s.length() < 7 || s.length() > 15) return false;
if (s.charAt(0) == '.' || s.charAt(s.length()-1) == '.') return false;
String[] ss = s.split("\\.");
if (ss.length != 4) return false;
for (int i = 0; i < ss.length; i++) {
if (ss[i].length() > 1 && ss[i].charAt(0) == '0') return false;
for (int j = 0; j < ss[i].length(); j++) {
if (ss[i].charAt(j) < '0' || ss[i].charAt(j) > '9') return false;
}
}
for (int i = 0; i < ss.length; i++) {
int temp = Integer.parseInt(ss[i]);
if (i == 0) {
if (temp < 1 || temp > 255) return false;
} else {
if (temp < 0 || temp > 255) return false;
}
}
return true;
}
}
測試用例
等價劃分法
有效可用的IP地址 |
|
A類 |
1.0.0.0-126.255.255.254 |
A私有 |
10.0.0.0- 10.255.255.254 |
B類 |
128.0.0.0-191.255.255.254 |
B私有 |
172.16.0.0-172.31.255.254 |
C類 |
192.0.0.0-223.255.255.254 |
C私有 |
192.168.0.0-192.168.255.254 |
Windows自動分配 |
169.254.0.0-169.254.255.254 |
有效但不可用的IP地址 |
|
D類 |
224.0.0.0-239.255.255.255 |
E類 |
240.0.0.0-255.255.255.254 |
全網 |
0.x.x.x, x.x.x.0 |
廣播 |
x.x.x.255 |
迴環 |
127.0.0.0-127.255.255.254 |