首页 > 试题广场 >

判断ip地址是否合法

[编程题]判断ip地址是否合法
  • 热度指数:980 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解


某网络系统需要对输入的IP地址进行合法性判断。IP地址由四个十进制数字组成,每个数字的取值范围是0到255(包含0和255)。
IP地址的格式为X.X.X.X,其中X表示一个十进制数字。系统要求判断输入的IP地址是否合法,即满足以下条件:


1.IP地址由四个数字组成,用点号分隔。

2.每个数字的取值范围是0到255。

3.数字之间没有多余的前导零,例如01是非法的。

4.IP地址不能以点号开始或结束,例如.192.168.0.1和192.168.0.1.是非法的。

不合法的情况下输出"invalid",合法的情况下,你还需要判断是哪一类地址:

A类地址:地址范围从1.0.0.0到126.0.0.0

B类地址:地址范围从128.0.0.0到191.255.255.255

C类地址:范围从192.0.0.0到223.255.255.255
其它地址:合法输入,但是不是A、B、C类
请通过代码实现上述功能


输入描述:
一行字符串,表示需要判断的IP地址


输出描述:
不合法的情况下,输出“invalid”
A类地址,输出“A_address"
B类地址,输出“B_address"
C类地址,输出“C_address"
其它地址,输出“other”
示例1

输入

1.2.3.4

输出

A_address
示例2

输入

1.1.1.256a

输出

invalid
示例3

输入

192.168.0.1

输出

C_address
java 判断较多,谁看看还有没有优化的空间
package day13; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) {
        Scanner scanner = new Scanner(
                System.in); // 创建Scanner对象并传入标准输入流(键盘)作为参数  String addStr = scanner.nextLine();  if (addStr.equals("") || addStr == null) {
            System.out.println("invalid");  return;  } //String addStr = "195.25.3.4";  char c1 = addStr.charAt(0);  char c2 = addStr.charAt(addStr.length() - 1);  String s1 = Character.toString(c1);  String s2 = Character.toString(c2);  String[] strings = new String[]{ "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"  };  int temp = 0;  for (String string : strings) { if (string.equals(s1)) {
                temp++;  } if (string.equals(s2)) {
                temp++;  }
        } if (temp != 2) {
            System.out.println("invalid");  return;  }
        String[] split = addStr.split("\\.");  if (split.length != 4) {
            System.out.println("invalid");  return;  } for (String s : split) { if (s.length() == 2 && Character.toString(s.charAt(0)).equals("0")) {
                System.out.println("invalid");  return;  }
        } for (int i = 0; i < split.length; i++) { try { if (Integer.parseInt(split[i]) > 255) {
                    System.out.println("invalid");  return;  }
            } catch (NumberFormatException e) {
                System.out.println("invalid");  return;  }
        } int address1 = Integer.parseInt(split[0]);  int address2 = Integer.parseInt(split[1]);  int address3 = Integer.parseInt(split[2]);  int address4 = Integer.parseInt(split[3]);  if (address1 < 126 && address1 > 0 || address1 == 126 && address2 == 0 && address3 == 0 && address4 == 0) {
            System.out.println("A_address");  } else if (address1 >= 128 && address1 <= 191) {
            System.out.println("B_address");  } else if (address1 >= 192 && address1 <= 223) {
            System.out.println("C_address");  } else {
            System.out.println("other");  }
    }
}

发表于 2024-01-14 00:16:41 回复(0)