栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

判断IP地址是否合法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

判断IP地址是否合法

在基于Internet的程序中,我们常常需要判断一个IP字符串的合法性。
合法的IP是这样的形式:A.B.C.D

其中A、B、C、D均为位于[0, 255]中的整数。为了简单起见,我们规定这四个整数中不允许有前导零存

输入:

输入由多行组成,每行是一个字符串,输入由“End of file”结束。
字符串长度最大为30,且不含空格和不可见字符

输出:

对于每一个输入,单独输出一行
如果该字符串是合法的IP,输出Y,否则,输出N

在,如001这种情况。

方法一:通过每个分组的比较来判断

sts[i].startsWith(“strings”)方法的返回值为boolean类型用于判断字符串sts[i]的前面字符是否与strings字符串相等,相等返回true,否则返回false

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			String st = sc.nextLine();
			if(st.equals("End of file")) {
				break;
			}
			String[] sts = st.split("\.");
//必须用转义字符,而不能直接用".",因为split方法采用了正则表达式
			char t = 'Y';
			for(int i=0;i4 | sts.length<4) {
					t = 'N';break;
				}
//去掉前导零,因为parseInt方法会默认将前导零去掉;注意不要把0.0.0.0给去掉了
				if(sts[i].length()!=1 && sts[i].startsWith("0")) {
					t = 'N';break;
				}
				try{//把所有不合法的(含有不是int类型的)排除
					int a = Integer.parseInt(sts[i]);
					if(a<0 || a>255) {//把范围不对的排除
						t = 'N';break;
					}
				}catch(Exception e){
						t = 'N';break;
				}
			}	
			System.out.println(t);
		}
		sc.close();
	}
}

方法二:通过正则表达式来判断(不懂的可以点击正则表达式去查看相关文章详解^_^)

正则表达式:[0-9]|[1-9][0-9]|[1][0-9][0-9]|[2][0-5][0-5]  表示:0~255

import java.util.Scanner;
import java.util.regex.*;
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			String st = sc.nextLine();
			if(st.equals("End of file")) {
				break;
			}
			String regstr = "^(([0-9]|[1-9][0-9]|[1][0-9][0-9]|[2][0-5][0-5])\.){3}([0-9]|[1-9][0-9]|[1][0-9][0-9]|[2][0-5][0-5])$";
		    boolean f = Pattern.matches(regstr,st);
			if(f) {
				System.out.println("Y");
			}else {
				System.out.println("N");
			}
		}
        sc.close();
	}
}

方法三:也是最”笨“的方法,一个字符一个字符去比较

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			String sts = sc.nextLine();
			if(sts.equals("End of file")) {
				break;
			}
			String[] st = sts.split("\.");
		    char ch = 'Y';
		    for(int i=0;i4) {
		    		ch = 'N';break;
		    	}
		    	if(Pdip(st[i])=='N') {//一但有一组不合法就结束这串字符串的比较
		    		ch = 'N';break;
		    	}
		    }
		    System.out.println(ch);
		}
        sc.close();
	}

	private static char Pdip(String st) {//用来判断每组字符串是否合法
		if(st.length()==1) {
			if(st.charAt(0)>='0' && st.charAt(0)<='9') {
				return 'Y';
			}
		}
		if(st.length()==2) {
			if(st.charAt(0)>='1' && st.charAt(0)<='9' && st.charAt(1)>='0' && st.charAt(1)<='9') {
				return 'Y';
			}
		}
		if(st.length()==3) {
			if(st.charAt(0)=='1' && st.charAt(1)>='0' && st.charAt(0)<='9') {
				return 'Y';
			}
			if(st.charAt(0)=='2' && st.charAt(1)>='0' && st.charAt(1)<'5' && st.charAt(2)>='0' && st.charAt(2)<='9') {
				return 'Y';
			}
			if(st.charAt(0)=='2' && st.charAt(1)=='5' && st.charAt(2)>='0' && st.charAt(2)<='5') {
				return 'Y';
			}
		}
		return 'N';
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/719276.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号