首页 > 编程语言 >Java对ip地址校验

Java对ip地址校验

时间:2022-10-12 10:00:13浏览次数:56  
标签:arr return ip 校验 System str Java out

import java.util.Scanner;

public class ip_test {
/*
* IP的格式:(1~255).(0~255).(0~255).(0~255)
*
*/


public static void main(String[] args){
System.out.println("请输入ip");
String ip; // 接收传过来的ip

Scanner sc = new Scanner(System.in);
ip = sc.next();

//方法一
boolean isIpLegal = isIpLegal(ip);


if(isIpLegal){
System.out.println(ip + "合法");

}else{
System.out.println(ip + "不合法");
}

}



public static boolean isIpLegal(String str){

//检查ip是否为空
if(str == null){
return false;
}


//检查ip长度,最短为:x.x.x.x(7位) 最长为:xxx.xxx.xxx.xxx(15位)
if(str.length() <7 || str.length() >15){
System.out.print(str +" 长度不正确");
return false;

}

//对输入字符串的首末字符判断,如果是 "." 则是非法IP
// charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1

if(str.charAt(0) == '.' || str.charAt(str.length() - 1) == '.'){
System.out.println(str + "首尾字符不正确");
return false;
}


//按 "." 分割字符串,并判断分割出来的个数,如果不是4个,则是非法IP

String[] arr = str.split("\\.");

if(arr.length !=4){
System.out.println("字符串个数不对");
return false;
}

//对分割出来的每个字符串进行单独判断

for(int i =0;i<arr.length;i++){
//如果每个字符串不是一位字符,且以 '0' 开头,则是非法的ip,如:01.123.23.124 ,
if(arr[i].length() > 1 && arr[i].charAt(0) == '0'){
System.out.println("非法ip");
return false;

}
// 对每个字符串的每个字符进行逐一判断,如果不是数字0-9,则是非法的ip 如: 64.12.22.-1 针对 6、4、1、2、2、2、-1 逐个数字判断
for(int j =0; j < arr[i].length();j++){

if(arr[i].charAt(j)<'0' || arr[i].charAt(j) > '9'){
System.out.println("字符有不符合规定的");
return false;
}
}
}
//对拆分的每一个字符串进行转换成数字,并判断是否在 0 ~ 255

for(int i = 0; i < arr.length; i++){
int temp = Integer.parseInt(arr[i]);
if(i == 0){
if (temp < 1 || temp > 255){
return false;
}
}
else{
if(temp < 0 || temp > 255){
return false;
}
}
}
return true;
}


}

标签:arr,return,ip,校验,System,str,Java,out
From: https://blog.51cto.com/u_15769657/5749006

相关文章

  • Stream流中的常用方法_skip与Stream流中的常用方法_concat
    Stream流中的常用方法_skipskip:跳过前几个Stream流中的常用方法_skip:用于跳过元素如果希望跳过前几个元素,可以使用skip方法获取一个截取之后的新流Stream<T>skip(lo......
  • 【idea】将java项目打成jar包
    一、idea将java项目打成jar包(非maven方式)jar(JavaArchiveFile),翻译过来就是java的档案文件,它其实也类似于我们windows下的zip文件,唯一的区别就是在JAR文件的内容中......
  • Java安全之Webshell免杀
    Java安全之Webshell免杀当遇到文件上传时,如果网站存在查杀软件,我们上传的一句话木马会被直接秒杀,这时候就需要做一下免杀,绕过查杀软件的检测。思路我的想法是先拆分,然后......
  • Java 手动显示调用validate的实体属性验证
    importorg.springframework.util.CollectionUtils;importjavax.validation.ConstraintViolation;importjavax.validation.Valid;importjavax.validation.Validati......
  • Java自学小白——IO流
    一、文件基础知识Java对文件的操作是通过IO流来实现的,想要了解IO流,就得先学习Java的File类                    I/O......
  • Java小白学习笔记——反射
    快速入门一,反射概述反射机制       上述程序的返回值  反射获取对象 方式一在编译阶段使用,一般多在通过读取配置文件获取方式二在加载......
  • java常用注解校验参数
    validation中内置的constraints注解描述@AssertFalse 所注解的元素必须是Boolean类型,且值为false@AssertTrue所注解的元素必须是Boolean类型,且值为true......
  • java 字体绘制
    一、前提1、如下图是组件的继承关系可以看到所有的组件都继承Component2、绘制函数界面显示或者窗口大小改变的时候,都会调用protectedvoidpaintComponent(Graphicsg......
  • 【Bug解决】Ubuntu安装pip3:无法定位软件包问题
    转自https://zstar.blog.csdn.net/article/details/125257999最近想要使用kali里面的python3,需要pip3,结果怎么也不对。提示无法定位软件包。网上找到这一篇:参考一下。“......
  • 《Effective Java》
    《EffectiveJava》  第1章引言 第2章创建和销毁对象 第1条:考虑用静态工厂方法代替构造器 第2条:遇到多个构造器参数时要考虑用构建器 第3条:用私有构造器或者枚举......