HW-IP合法性_Java
| 描述 |
现在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";
}
}
HW-IP合法性_Java的更多相关文章
- java 判断字符串IP合法性以及获取IP的数值形式
/** * 计算传入的IP地址的数字IP*/ public static long getIpNum(String ip) { long ipNum = 0; if (StringUtils.isNo ...
- C# 验证IP是否正确简易方法 源代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 纯真IP数据库格式详解
纯真版IP数据库,优点是记录多,查询速度快,它只用一个文件QQWry.dat就包含了所有记录,方便嵌入到其他程序中,也方便升级.缺点是你想要编辑它却是比较麻烦的,由于其文件格式的限制,你要直接添加IP ...
- 【Python】 http客户端库requests & urllib2 以及ip地址处理IPy
requests requests是个HTTPClient库,相比于urllib,urllib2等模块比更加简洁易用 ■ get请求 作为示例,讲一下关于requests如何发起并处理一个get请求 ...
- 纯真IP数据库格式详解 附demo
纯真版IP数据库,优点是记录多,查询速度快,它只用一个文件QQWry.dat就包含了所有记录,方便嵌入到其他程序中,也方便升级.缺点是你想要编辑它却是比较麻烦的,由于其文件格式的限制,你要直接添加IP ...
- IP判断 (字符串处理)
关于IP合法性判断的题目,每个oj上的约束条件不尽相同,我就根据自己做过的题目吧所有的约束条件汇总到一块,到时候做题时只需要把多余的越是条件删掉即可 题目描述: 对于IP我们总会有一定的规定,合法的I ...
- 在Excel表里面插入背景图
工作中我们会经常用到MS Excel,通常我们打开MS Excel,里面的工作表都是空白单调的背景.当然了,MS Excel可以在工作簿里面插入背景图片.那么问题来了,如果你没有安装Microsoft ...
- 【JavaScript】常用方法
Jquery选择器参考:http://www.w3school.com.cn/jquery/jquery_selectors.asp 获取class="a"元素点击: $(&quo ...
- 原始启动log&新log
root@Taiyear:/# U-Boot 1.1.3 (Dec 27 2013 - 09:14:28) SoC:MediaTek MT7620 DRAM: Memory Testing..655 ...
随机推荐
- 10行Java代码实现最近被使用(LRU)缓存
在最近的面试中,我曾被多次问到,怎么实现一个最近最少使用(LRU)的缓存.缓存可以通过哈希表来实现,然而为这个缓存增加大小限制会变成另一个有意思的问题.现在我们看一下怎么实现. 最近最少使用缓存的回收 ...
- css控制大小写
转换不同元素中的文本: text-transform:uppercase //全大写 text-transform:lowercase //全小写 text-transform:capitalize ...
- C/S 和 B/S 模式的区别与联系
如果要比较两种事物之间的相同点和不同点,首先,我们要分别对这两种事物有一个最基本的了解. 一.C/S与B/S的定义 C/S (Client/Server)结构,即大家熟知的客户机和服务器结构.它是软件 ...
- C#操作sql通用类 SQLHelper
Codeusing System; using System.Data; using System.Configuration; using System.Web; using System.Web. ...
- spring jdbcTemplate源码剖析
本文浅析 spring jdbcTemplate 源码,主要是学习其设计精髓.模板模式.巧妙的回调 一.jdbcTemplate 类结构 ①.JdbcOperations : 接口定义了方法,如 &l ...
- C#中反射的使用(How to use reflect in CSharp)(1)
最近想做一个插件式的软件给公司的监控用,初步的想法是使用C#去反射Dll,Invoke其中的方法.此文仅供开发参考,不涉及原理,98%的代码以及2%的废话. 测试Solution是这么建的(.NET ...
- 给postfix设置黑名单
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- git codes
https://github.com/chibi-guts/DressUpProject https://github.com/TuttiFruttiFT/TFAndroid https://gith ...
- 《Linux内核修炼之道》 之 高效学习Linux内核
http://blog.csdn.net/fudan_abc/article/details/5738436
- poj 1654 Area 多边形面积
/* poj 1654 Area 多边形面积 题目意思很简单,但是1000000的point开不了 */ #include<stdio.h> #include<math.h> ...