各种情况的判断,具体看代码

public class Main{
    public static void main(String[] args){
        Scanner sc= new Scanner(System.in);
//         String[] ips=new String[4];
        while(sc.hasNextLine()){
            String ip=sc.nextLine();
            //末尾添加点,判断最后一个数字
            ip+=".";
            int num=0,count=0,loc=-1,len=0;
            for(int i=0;i<ip.length();i++){
                //对每个字符做判断,分点、数字、和其他讨论
                if(ip.charAt(i)=='.'){
                    //点情况错误判断,数组超出范围,两个点相邻,两位数字开头为0
                    if(num<0||num>255||loc==i-1||(num<Math.pow(10,len-1)&&num>0)){
                        System.out.print("NO");
                        return;
                    }
                    //更行变量,重新判断
                    loc=i;
                    count++;
                    len=0;
                    num=0;
                    
                }
                else if(ip.charAt(i)>='0'&&ip.charAt(i)<='9'){
                    num=num*10+(ip.charAt(i)-'0');
//                     System.out.print(num+" ");
                    len++;
                }
                else{
                    System.out.print("NO");
                    return;
                }
            }
            if(count==4){
                System.out.print("YES");
            }
            else{
                System.out.print("NO");
            }
 
        }
        
    }
}