判斷IP地址有效性

判斷IP地址有效性

import java.util.Scanner;
//ip格式:(1-255).(0-255).(0-255).(0-255)
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) {
        //檢查ip是否爲空
        if (s == null) return false;
        //檢查IP長度,最短爲7位,最長15位
        if (s.length() < 7 || s.length() > 15) return false;
        //輸入字符串的首末字符判斷,如果是‘.'則是非法ip
        if (s.charAt(0) == '.' || s.charAt(s.length()-1) == '.') return false;
        //按‘.’分割字符串,並判斷分割出來的數,如果不是4個,則是非法IP
        String[] ss = s.split("\\.");
        if (ss.length != 4) return false;
        //對分割出來的字符進行單獨判斷

        for (int i = 0; i < ss.length; i++) {
            //如果每個字符不是一個字符,且以‘0’開頭,則是非法的,比如01.002.03.004
            if (ss[i].length() > 1 && ss[i].charAt(0) == '0') return false;

            //對每個字符串的每個字符逐一進行判斷,如果不是0-9,則是非法
            for (int j = 0; j < ss[i].length(); j++) {
                if (ss[i].charAt(j) < '0' || ss[i].charAt(j) > '9') return false;
            }
        }
        //對拆分的每一個字符串進行轉換成數字,並判斷是否在0-255
        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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章