zoukankan      html  css  js  c++  java
  • 26:IPMaskCheck识别有效的ip地址和掩码并分类统计

    题目描述

    请解析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.255
    18 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.0
    25 1.0.0.1~255.0.0.0
    26 192.168.0.2~255.255.255.0
    27 19..0.~255.255.255.0
    28 输出例子:
    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                 //MaskCheck
    40                 if(ipString.length!=4 || maskString.length!=4)
    41                 {
    42                     f++;
    43                     continue;
    44                 }
    45                 //IP Check
    46                 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-255
    77                 }
    78             System.out.println(a+" "+b+" "+c+" "+d+" "+e+" "+f+" "+g);
    79         }
    80         }
    81 }
  • 相关阅读:
    css
    css加号波浪号
    C++对象池
    C++11 智能指针
    C++内存泄漏检测(调试工具)
    JSONP是个嘛玩意?解决跨域问题?
    使用django + KindEditor 开发个人博客系统
    前端文本框插件KindEditor
    jQuery AJAX
    Django ModelForm表单验证
  • 原文地址:https://www.cnblogs.com/newcoder/p/5774424.html
Copyright © 2011-2022 走看看