题目描述

请解析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

 import java.util.Scanner;

 /*# 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地址和对应的掩码,进行分类识别。要求按照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*/
public class IPMaskCheck {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int a=0,b=0,c=0,d=0,e=0,f=0,g=0;
while(in.hasNextLine()){
int flag = 0;
String[] input = in.nextLine().split("~");
String[] ipString = input[0].split("\\.");
String[] maskString = input[1].split("\\.");
//MaskCheck
if(ipString.length!=4 || maskString.length!=4)
{
f++;
continue;
}
//IP Check
for(int i =0;i<4;i++)
{
if(Integer.parseInt(ipString[i]) <0 || Integer.parseInt(ipString[i])>255)
{
f++;
break;
}
}
int ip1 = Integer.parseInt(ipString[0]);
int ip2 = Integer.parseInt(ipString[1]);
if(ip1>=1 && ip1<=126)
{
a++;
if(ip1==10)g++;
}
else if(ip1>=128 && ip1<=191)
{
b++;
if(ip1==172 && ip2<=31 && ip2>=16)g++;
}
else if(ip1>=192 && ip1<=223)
{
c++;
if(ip1==192 && ip2==168)g++;
}
else if(ip1>=224 && ip1<=239)
{
d++;
}
else {
e++;//240-255
}
System.out.println(a+" "+b+" "+c+" "+d+" "+e+" "+f+" "+g);
}
}
}

26:IPMaskCheck识别有效的ip地址和掩码并分类统计的更多相关文章

  1. 识别有效的IP地址和掩码并进行分类统计

    该题我的想法是把每一个ip看出一个整数,将读取得到的数据一一与给定的ip范围比较即可.另外本题应该注意的地方是scanf读取俩字符串的方法. 代码如下: #include<stdio.h> ...

  2. 识别有效的IP地址和掩码并进行分类统

    #include<iostream> #include<stdio.h> #include<string.h> using namespace std; int c ...

  3. 算法 识别有效ip地址和掩码并做统计

    题目描述 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. 所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.2 ...

  4. Python 输入IP地址及掩码告诉你该网段包含的全部地址(IPy模块练习)

    IPy模块原本使用时需要输入正确的网络位和掩码,我利用处理报错的机制实现了输入任意IP地址和掩码均可正确输出结果的小程序. #!/usr/bin/env python # -*- coding: ut ...

  5. 设置ip地址、掩码、网关、DNS

    @echo offcolor f8mode con cols=40 lines=8echo.echo.echo      设置IP为:echo.set /p ip=              192. ...

  6. 根据Ip地址与掩码 得出 子网地址与广播地址

    由于给予条件优先,没有直接给出子网地址与广播地址.但是又需要这两个参数,需要我们使用ip 地址与 子网掩码得出子网地址与广播地址.思路如下:       1. 子网地址, ip地址与 子网掩码分别换算 ...

  7. IP地址分类与识别错误

    //描述:  请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. //所有的IP地址划分为 A,B,C,D,E五类 //A类地址1.0.0.0 ...

  8. MAC地址与IP地址的区别

    介绍一下MAC地址的知识,MAC地址和IP地址的区别以及MAC地址在实际应用中所涉及到的安全问题. 一.基础知识 如今的网络是分层来实现的,就像是搭积木一样,先设计某个特定功能的模块,然后把模块拼起来 ...

  9. 【转载】IP地址和子网划分学习笔记之《子网掩码详解》

    原文地址: https://blog.51cto.com/6930123/2112748 一.子网掩码 IP地址是以网络号和主机号来标示网络上的主机的,我们把网络号相同的主机称之为本地网络,网络号不相 ...

随机推荐

  1. EclEmma Java Code Coverage for Eclipse

      1. 1EclEmma的介绍 一.EclEmma 简介: EclEmma是一个开源的软件测试工具(for eclipse),可以在编码过程中查看代码调用情况.也可以检测单覆盖率. 详见: http ...

  2. 股票交易(bzoj 1855)

    Description 最近lxhgww又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律. 通过一段时间的观察,lxhgww预测到了未来T天内某只股票的走势,第i天的股票买入价 ...

  3. ASP.NET MVC 1.0 哈哈。。转过来,还没学。。

    原文发布时间为:2009-06-13 -- 来源于本人的百度文章 [由搬家工具导入] ASP.NET MVC 1.0 发布了投递人 itnews 发布于 2009-03-19 00:46 评论(8) ...

  4. [SaltStack] Minion-conf自动更新

    minion-conf配置文件自动更新, 加载 minion-conf是每个minion自身以来的配置, 为了方便我们在中心管控机上(Master)统一配置, 然后下发文件, 进而使得Minion能够 ...

  5. 小谈c#数据库存取图片的方式

    第一种方式   文件夹与数据库配合 /// <summary> /// 上传图片 /// </summary> /// <param name="FUSShop ...

  6. android的动态代码

    1,Android代码设置Shape,corners,Gradient  (http://blog.csdn.net/houshunwei/article/details/17392409) int ...

  7. javascript 表格隔行换色

    用到的知识点: 获取表格元素 tbody 和 rows都是有索引的 这里我们只有一组tbody所以 索引是0 偶数行 索引取余2为0 奇数行 索引取余2不为0 通过 遍历行索引设置相应的颜色. < ...

  8. BZOJ2870—最长道路tree

    最长道路tree Description H城很大,有N个路口(从1到N编号),路口之间有N-1边,使得任意两个路口都能互相到达,这些道路的长度我们视作一样.每个路口都有很多车辆来往,所以每个路口i都 ...

  9. java.lang.StackOverflowError at org.eclipse.jetty.util.resource.Resource.<init>(Resource.java:40)

    今天做项目的时候,不知道哪根筋搭错了,多写了一句话,导致我忙活了一下午,各种百度,最后在朋友的帮助下,给了我思路,完美解决,不多说,上图. 我的登录页面引入了bootstrap.jsp的东西 解决问题 ...

  10. Maximum Product Subarray - LeetCode

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...