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 ...
随机推荐
- nyoj 845 无主之地1
无主之地1 时间限制:1000 ms | 内存限制:65535 KB 难度:0 描述 子晓最近在玩无主之地1,他对这个游戏的评价不错,结合了FPS与RPG元素,可玩度很高.不过,他发现了一代的 ...
- passport.js
$(function(){ function isPlaceholder(){ var input = document.createElement('input'); return 'placeho ...
- [转] C++ Redistributable Package版本详解
我们使用的程序常常都需要C++ Redistributable Package的支持.C++ Redistributable Package有众多版本,给安装带了不便. 目前(2013-12-04) ...
- mysql视图和存储过程定义者修改脚本(懒人专用)
前言: 在实际工作中mysql数据库的迁移.备份恢复.数据库重命名等一系列涉及到视图和存储过程定义者问题都会需要修改,每次都要从基础表获取数据,然后手工整理做脚本,十分麻烦,所以简单写了个过程,以后可 ...
- 关于PKCS5Padding与PKCS7Padding的区别
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- 常见排序算法及其java实现
最近学习了下java,感觉java在基本语法上与C++非常相似.作为练习,我用java实现了冒泡排序.选择排序.插入排序.基尔排序.快速排序.堆排序.计数排序.合并排序. 以下为实现代码: publi ...
- 在LiteIDE 中增加build 的参数
问题: go build 时候其实可以带参数的,但是我们直接运行liteIDE 就找不到 特别对于 Walk 这个gui 需要 -ldflags="-H windowsgui" 把 ...
- js原生瀑布流
背景: 1.在移动端开发,jq文件是显得非常庞大的,所以所有效果尽量用HTML5和原生js实现. 2.本次瀑布流是固定列数,采用非浮动的另外一种瀑布流思想实现的. 3.本次数据来源是json接口 4. ...
- android学习日记05--Activity间的跳转Intent实现
Activity间的跳转 Android中的Activity就是Android应用与用户的接口,所以了解Activity间的跳转还是必要的.在 Android 中,不同的 Activity 实例可能运 ...
- 王帅:深入PHP内核
[问底]王帅:深入PHP内核(三)——内核利器哈希表与哈希碰撞攻击 [问底]王帅:深入PHP内核(二)——SAPI探究 [问底]王帅:深入PHP内核(一)——弱类型变量原理探究