描述

现在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就不合法
  2. 而且不能有空字符串,也就是..不能相邻,比如1.1..1就不合法
  3. 对每一个子字符串判定是不是大于等于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";
}
}

最新文章

  1. Redis简单案例(四) Session的管理
  2. pip 安装插件慢的解决方法
  3. java SE 常用的排序算法
  4. linux4
  5. [shell基础]——整数比较;字符串比较;文件测试;逻辑测试符
  6. JS判断鼠标从什么方向进入一个容器
  7. 在ASP.NET MVC自定义错误页面
  8. servlet上传图片 服务器路径(转)
  9. 吐槽CSDN编辑
  10. isKindOfClass,isMemberOfClass使用备忘
  11. struts2中Action到底是什么,怎么理解
  12. Java数据结构和算法(十五)——无权无向图
  13. linux-kernel-4.4 移植 (3) 网卡移植
  14. Spring Boot 异常处理
  15. urls.py的配置[路由配置]
  16. 小程序布局中class=&#39;container&#39;的bug
  17. MT【220】三次方程必有实根
  18. solus 系统 - 怎么使用中文输入法?
  19. JPush Flutter Plugin(Futter推送-极光推送)
  20. W,b的初始化和几种激活函数

热门文章

  1. Android实例-LocationSensor位置传感器(XE8+小米2)
  2. R语言-Knitr包的详细使用说明
  3. Oracle12c功能增强 新特性之管理功能的增强
  4. [React Native] Build a Separator UI component
  5. 【问题汇总】ListView的FooterView设置可见性的问题
  6. iOS开发——开发技巧&amp;LLDB详解
  7. skip-character-set-client-handshake 与 character-set-client-handshake
  8. mac中vmware tools进行磁盘压缩和vmware-tools-cli的使用方法
  9. PDF转换成二进制字符串写入 HTTP 输出流
  10. Cocoa与Cocoa Touch的区别