博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
26:IPMaskCheck识别有效的ip地址和掩码并分类统计
阅读量:6964 次
发布时间:2019-06-27

本文共 3542 字,大约阅读时间需要 11 分钟。

题目描述

请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。

所有的IP地址划分为 A,B,C,D,E五类

A类地址1.0.0.0~126.255.255.255;  

B类地址128.0.0.0~191.255.255.255; 

C类地址192.0.0.0~223.255.255.255; 

D类地址224.0.0.0~239.255.255.255; 

E类地址240.0.0.0~255.255.255.255 

私网IP范围是: 

10.0.0.0~10.255.255.255

172.16.0.0~172.31.255.255 

192.168.0.0~192.168.255.255 

子网掩码为前面是连续的1,然后全是0。(例如:255.255.255.32就是一个非法的掩码)

输入描述:多行字符串。每行一个IP地址和掩码,用~隔开。

输出描述:统计A、B、C、D、E、错误IP地址或错误掩码、私有IP的个数,之间以空格隔开。

输入例子:

10.70.44.68~255.254.255.0

1.0.0.1~255.0.0.0

192.168.0.2~255.255.255.0

19..0.~255.255.255.0

输出例子:

1 0 1 0 0 2 1

# 1. Mask 255.255.255.255 , 0.0.0.0 为非法。
# 2. IP和Mask必须同时正确,才能被分类到A, B, C, D, E以及私有。
# 3. IP和Mask同时错误时,只算一次错误
# 4. 注意0.*.*.*以及127.*.*.*不属于任何类别。
思路:
每一行数据有一个ip和一个掩码,先判断两个的长度,不符合直接over;
下来看掩码,掩码不符合,直接错误的+1,后边不用执行判断IP,所以设置flag(如何判断掩码是否符合)
掩码符合,判断IP,根据区间断归类统计,每个区间段之后继续判断是不是私网IP
 
1 import java.util.Scanner; 2  3 /*# 1. Mask 255.255.255.255 , 0.0.0.0 为非法。 4 # 2. IP和Mask必须同时正确,才能被分类到A, B, C, D, E以及私有。 5 # 3. IP和Mask同时错误时,只算一次错误 6 # 4. 注意0.*.*.*以及127.*.*.*不属于任何类别。 7 */ 8 /*题目描述 9 请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。10 所有的IP地址划分为 A,B,C,D,E五类11 A类地址1.0.0.0~126.255.255.255;  12 B类地址128.0.0.0~191.255.255.255; 13 C类地址192.0.0.0~223.255.255.255; 14 D类地址224.0.0.0~239.255.255.255; 15 E类地址240.0.0.0~255.255.255.255 16 私网IP范围是: 17 10.0.0.0~10.255.255.25518 172.16.0.0~172.31.255.255 19 192.168.0.0~192.168.255.255 20 子网掩码为前面是连续的1,然后全是0。(例如:255.255.255.32就是一个非法的掩码)21 输入描述:多行字符串。每行一个IP地址和掩码,用~隔开。22 输出描述:统计A、B、C、D、E、错误IP地址或错误掩码、私有IP的个数,之间以空格隔开。23 输入例子:24 10.70.44.68~255.254.255.025 1.0.0.1~255.0.0.026 192.168.0.2~255.255.255.027 19..0.~255.255.255.028 输出例子:29 1 0 1 0 0 2 1*/30 public class IPMaskCheck {31         public static void main(String[] args){32             Scanner in=new Scanner(System.in);33             int a=0,b=0,c=0,d=0,e=0,f=0,g=0;34             while(in.hasNextLine()){35                 int flag = 0;36                 String[] input = in.nextLine().split("~");37                 String[] ipString = input[0].split("\\.");38                 String[] maskString = input[1].split("\\.");39                 //MaskCheck40                 if(ipString.length!=4 || maskString.length!=4)41                 {42                     f++;43                     continue;44                 }45                 //IP Check46                 for(int i =0;i<4;i++)47                 {48                     if(Integer.parseInt(ipString[i]) <0 || Integer.parseInt(ipString[i])>255)49                     {50                         f++;51                         break;52                     }53                 }54                 int ip1 = Integer.parseInt(ipString[0]);55                 int ip2 = Integer.parseInt(ipString[1]);56                 if(ip1>=1 && ip1<=126)57                 {58                     a++;59                     if(ip1==10)g++;60                 }61                 else if(ip1>=128 && ip1<=191)62                 {63                     b++;64                     if(ip1==172 && ip2<=31 && ip2>=16)g++;65                 }66                 else if(ip1>=192 && ip1<=223)67                 {68                     c++;69                     if(ip1==192 && ip2==168)g++;70                 }71                 else if(ip1>=224 && ip1<=239)72                 {73                     d++;74                 }75                 else {76                     e++;//240-25577                 }78             System.out.println(a+" "+b+" "+c+" "+d+" "+e+" "+f+" "+g);79         }80         }81 }

 

转载于:https://www.cnblogs.com/newcoder/p/5774424.html

你可能感兴趣的文章
Altium Designer 常用快捷键(记录)
查看>>
BIO模型分析
查看>>
linux 修改默认编码
查看>>
用磁带后改用本地磁盘备份可能出现的问题
查看>>
Python装饰器进阶
查看>>
调用 SetRect 函数可以设定矩形区域
查看>>
zabbix监控之nginx
查看>>
MaxCompute Studio 使用入门
查看>>
读《Linux Shell脚本攻略》第1章笔记
查看>>
某电商项目PostgreSQL数据库备份恢复方案
查看>>
UI2Code智能生成Flutter代码——机器生成代码
查看>>
Node.js 应用故障排查手册 —— 类死循环导致进程阻塞
查看>>
Discord 公司如何使用 Cassandra 存储上亿条线上数据
查看>>
mysql8.0 二进制安装
查看>>
内存问题导致机器无法正常开机
查看>>
centos的samba共享配置
查看>>
Netty入门-client/server
查看>>
PHP推荐禁用函数disable_functions PHP安全配置
查看>>
Webit Script 入住 OSC
查看>>
java8 学习记录
查看>>