HW-IP合法性

it2024-09-29  19

描述

现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。

现在需要你用程序来判断IP是否合法。

 

知识点字符串,循环,链表,队列,栈,查找,搜索,排序,树,图,数组,函数,指针,枚举,位运算,结构体,联合体,文件操作,递归运行时间限制10M内存限制128输入

输入一个ip地址

输出

返回判断的结果YES or NO

 

样例输入10.138.15.1样例输出YES

个人总结:

    (1)Java语法上正则化表达式的使用技巧,对于','要用'\\,'

    (2)注意空字符串“”和null的区别,判断一个字符串是不是空字符串用.equals("")

     (3) 题目本身而言的判断

          注意字符串数组长度必须为四,比如1.1.1就不合法          而且不能有空字符串,也就是..不能相邻,比如1.1..1就不合法          对每一个子字符串判定是不是大于等于0,小于等于255的数字;我本人用的是一个个的加,其实可以用Java的 Integer.parseInt(string2);

              (1,判断是否有三个‘.’;2,判断三个点之间是否不相邻;3,判断每个部分是否是数字;4,判断每个数字是否在0到255之间。)    

 

方案一:

import java.util.Scanner; public class Main { public static void main(String[]args){   Scanner scanner=new Scanner(System.in);   String string = scanner.nextLine();   String[] num=string.split("\\.");   boolean result = true;   if(num.length!=4) result = false;   for (String string2 : num) {     int no = Integer.parseInt(string2);     if(no>=0 && no<=255){     }else{     result=false;     break;     }   }   if(result){   System.out.println("YES");   }else{   System.out.println("NO");   }  } }

方案二:

import java.util.Scanner; public class IP_useful { public static void main(String[] args){ System.out.println("请按照规格输入IP地址"); Scanner ScStr=new Scanner(System.in); String sqy = ScStr.nextLine(); System.out.println(judge(sqy)); //打印 } public static String judge(String mxf){ String str[]=mxf.split("\\."); //以点分开成若干字符串 if(str.length!=4){ return "NO"; //如果没有正好是三个‘.’就返回 } int num=0; int tmp=0; int flag[] = new int[str.length]; int flag1=1; for(int i=0;i<str.length;i++){ if(str[i].equals("")){ return "NO"; //如果为空字符串就返回 } char[] ch=str[i].toCharArray(); //将单个字符串转换成字符数组 if(ch.length<=3){ //小于四个数才能有效 for(int j=0;j<ch.length;j++){ if(ch[j]>='0'&&ch[j]<='9') { //数字判断 tmp=ch[j]-'0'; num=num+tmp*10^(ch.length-j-1); } } if(num>=0&&num<256){ flag[i]=1; } } } for(int k=0;k<str.length;k++){ flag1=flag1*flag[k]; //只要每一个的标志位为1; } if (flag1==1) return "YES"; else return "NO"; } }

 

转载于:https://www.cnblogs.com/snowwhite/p/4734560.html

最新回复(0)