描述

现在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";
}
}

HW-IP合法性_Java的更多相关文章

  1. java 判断字符串IP合法性以及获取IP的数值形式

    /** * 计算传入的IP地址的数字IP*/ public static long getIpNum(String ip) { long ipNum = 0; if (StringUtils.isNo ...

  2. C# 验证IP是否正确简易方法 源代码

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. 纯真IP数据库格式详解

    纯真版IP数据库,优点是记录多,查询速度快,它只用一个文件QQWry.dat就包含了所有记录,方便嵌入到其他程序中,也方便升级.缺点是你想要编辑它却是比较麻烦的,由于其文件格式的限制,你要直接添加IP ...

  4. 【Python】 http客户端库requests & urllib2 以及ip地址处理IPy

    requests requests是个HTTPClient库,相比于urllib,urllib2等模块比更加简洁易用 ■ get请求 作为示例,讲一下关于requests如何发起并处理一个get请求 ...

  5. 纯真IP数据库格式详解 附demo

    纯真版IP数据库,优点是记录多,查询速度快,它只用一个文件QQWry.dat就包含了所有记录,方便嵌入到其他程序中,也方便升级.缺点是你想要编辑它却是比较麻烦的,由于其文件格式的限制,你要直接添加IP ...

  6. IP判断 (字符串处理)

    关于IP合法性判断的题目,每个oj上的约束条件不尽相同,我就根据自己做过的题目吧所有的约束条件汇总到一块,到时候做题时只需要把多余的越是条件删掉即可 题目描述: 对于IP我们总会有一定的规定,合法的I ...

  7. 在Excel表里面插入背景图

    工作中我们会经常用到MS Excel,通常我们打开MS Excel,里面的工作表都是空白单调的背景.当然了,MS Excel可以在工作簿里面插入背景图片.那么问题来了,如果你没有安装Microsoft ...

  8. 【JavaScript】常用方法

    Jquery选择器参考:http://www.w3school.com.cn/jquery/jquery_selectors.asp 获取class="a"元素点击: $(&quo ...

  9. 原始启动log&新log

    root@Taiyear:/# U-Boot 1.1.3 (Dec 27 2013 - 09:14:28) SoC:MediaTek MT7620 DRAM:  Memory Testing..655 ...

随机推荐

  1. Android实例-多窗口的切换(XE8+小米2)

    1.图片一是程序运行后的界面. 2.图片二是点击"非模态显示"的界面. 3.图片三是点击"模诚显示"的界面(提示平台不支持). unit Unit1; inte ...

  2. 使用Dropbox提高个人数据管理效率

    Dropbox 应该大家都不陌生,其在云存储阵营中独树一帜,通俗的说它是提供多终端和云之间的数据同步服务,而就其本质来说它无非是将数据的采集.存储和分发三个关节打通,整合成统一服务对外提供.这就好比只 ...

  3. HTML5随笔

    1 首先介绍一下html5,以及为什么用html5, HTML5是HTML最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定. HTML5的设计目的是为了在移动设备上支持多媒体.HTM ...

  4. win32多线程学习总结:同步机制critical sections

    Critical sections是win32中最容易使用的同步机制,用来处理一份共享资源,共享资源指的是每次只能够被一个线程处理的资源,包括内存.数据结构.文件等. 优点: 1.使用便捷,即声明即使 ...

  5. linux下eclipse的安装

    Eclipse的安装http://java.sun.com/javace/downloads/index.jsp下载:Jdk-6u17-linux-i586.binhttp://www.eclipse ...

  6. libpq中调用prepared statement:

    代码如下: [root@lex tst]# cat testlibpq.c /* * testlibpq.c * Test the C version of LIBPQ, the POSTGRES f ...

  7. 计算机思维or人的思维

    计算机领域就会有计算机领域的一些特性和一些思维方式,或者说有他自己的一些问题,须要用相应的思维方式来进行理解它,从而更好的驾驭他.有些时候遇到的一些问题,自己想却想不明确,也是由于我们没有把自己当做一 ...

  8. Delphi静态加载DLL和动态加载DLL示例

    下面以Delphi调用触摸屏动态库xtkutility.dll为例子,说明如何静态加载DLL和动态加载DLL. 直接上代码. 1.静态加载示例 unit Unit1; interface uses W ...

  9. [AngularJS] Using AngularJS interceptors with $http

    Sometimes you might need to modify HTTP requests and responses. This could be for a variety of reaso ...

  10. Struts2 中的数据传输

    1.     如何将参数从界面传递到Action? 你可以把Struts2中的Action看做是Struts1的Action+ActionForm,即只需在Action中定义相关的属性(要有gette ...