各种情况的判断,具体看代码
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");
}
}
}
}