华为oj之合法ip

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mushao999/article/details/45398787
描述:
现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
现在需要你用程序来判断IP是否合法。


 
知识点: 字符串,循环,链表,队列,栈,查找,搜索,排序,树,图,数组,函数,指针,枚举,位运算,结构体,联合体,文件操作,递归 
题目来源: 内部整理 
练习阶段: 初级 
运行时间限制: 10Sec
内存限制: 128MByte
输入:  
输入一个ip地址
 
输出:  

返回判断的结果YES or NO

样例输入:
10.138.15.1
                   
样例输出:

YES

思路:先将录入的字符串按照“.”划分,然后把每个string转化为int,判断是否在0和255之间,经过所有这些考验后的就是合法ip

注意事项:java中string的split函数参数是正则表达式,但是.是正则表达式的特殊字符,所以需要些\.,但是“\”也是特殊字符也需要转义,所以split的参数为“\\.”。另注意,在将string转int时可能抛出异常,抛出的异常为NumberFormatException。

解决方案:

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		String ip=sc.nextLine();
		sc.close();
		String[] numbers=ip.split("\\.");
		if(numbers.length!=4)
		{
			System.out.println("NO");
			return;
		}
		for(String str:numbers)
		{
			int num=-1;
			try {
				num=Integer.parseInt(str);
			} catch (NumberFormatException e) {
				// TODO: handle exception
				System.out.println("NO");
				return;
			}
			if(num<0||num>255)
			{
				System.out.println("NO");
				return;
			}
		}
		System.out.println("YES");
	}
}


猜你喜欢

转载自blog.csdn.net/mushao999/article/details/45398787
今日推荐