HDU2206:IP的计算

Problem F

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 65   Accepted Submission(s) : 9

Font: Times New Roman | Verdana | Georgia

Font Size:

Problem Description

在网络课程上,我学到了很多有关IP的知识。IP全称叫网际协议,有时我们又用IP来指代我们的IP网络地址,现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如192.168.100.16,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
但是粗心的我,常常将IP地址写错,现在需要你用程序来判断。

Input

输入有多个case,每个case有一行,不超过100个字符。

Output

对于每个case,判断输入的IP是否正确,如果正确输入YES,否则NO。

Sample Input

192.168.100.16

Sample Output

YES

import java.util.Scanner;

public class hdu1003 {

 public static void main(String[] args) {
  Scanner cin = new Scanner(System.in);

  while (cin.hasNext()) {
   String a = cin.nextLine();

   try {
    String[] arr;
    int flag = 0;
    int flag2 = 0;
    arr = a.split("\.");
    int p=0;
    for(int i=0;i<a.length();i++){  //查找.的次数
     if(a.charAt(i)=='.')
      p++;
    }
    if(arr.length==0||p!=3){    //如果数组为空时比如输入...后数组为空,或者如果.出现的次数不是三个的话,就结束了
     System.out.println("NO");
     continue;
    }
    int[] arr2 = new int[arr.length];
    
    for (int i = 0; i < arr.length; i++) {
     if ((arr[i].length() > 0) && (arr[i].length() <= 3)&&arr.length==4) {   //每一个数字段必须是在0~255之间,个数为1~3个
      arr2[i] = Integer.parseInt(arr[i]);
      if ((arr2[i] >= 0) && (arr2[i] < 256)) {   //判断数字是否在范围之内
       flag2 = 1;
      } else {
       flag2 = 0;
       break;
      }
     } else {
      flag2 = 0;
      break;
     }
    }

    for (int i = 0; i < arr.length; i++) {
     if (arr.length != 4 || flag2 == 0) {
      flag = 0;
      System.out.println("NO");
      break;
     }
     if ((arr2[i] >= 0) && (arr2[i] < 256)) {
      flag = 1;
     } else {
      flag = 0;
      System.out.println("NO");
      break;
     }
    }
    if (flag == 1) {
     System.out.println("YES");
    }
   } catch (Exception e) {
    System.out.println("NO");
   }

  }

 }
}

/*
 *
 * 考点:1、必须是只有3个.
 *   2、各个数字段必须是在0~255之间,个数为1~3个
 *   3、考虑非数字的情况
 *   4、考虑空的情况   ,  比如    ...
 *   

*Problem F
Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 35   Accepted Submission(s) : 4
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
在网络课程上,我学到了很多有关IP的知识。IP全称叫网际协议,有时我们又用IP来指代我们的IP网络地址,现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如192.168.100.16,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
但是粗心的我,常常将IP地址写错,现在需要你用程序来判断。

Input
输入有多个case,每个case有一行,不超过100个字符。
Output
对于每个case,判断输入的IP是否正确,如果正确输入YES,否则NO。
Sample Input
192.168.100.16
Sample Output
YES
*/


原文地址:https://www.cnblogs.com/qjack/p/3366567.html