如何实现“ip段匹配 java”

流程图

flowchart TD
   A(开始) --> B(读取IP段)
   B --> C(检查IP格式)
   C --> D(解析IP段)
   D --> E(匹配IP)
   E --> F(输出结果)
   F --> G(结束)

步骤表格

步骤 描述
1 读取IP段
2 检查IP格式
3 解析IP段
4 匹配IP
5 输出结果
6 结束

具体步骤及代码示例

步骤1: 读取IP段

// 读取用户输入的IP段
Scanner scanner = new Scanner(System.in);
System.out.println("请输入IP段:");
String ipRange = scanner.nextLine();

步骤2: 检查IP格式

// 使用正则表达式检查IP格式是否正确
if (!ipRange.matches("\\d+\\.\\d+\\.\\d+\\.\\d+-\\d+\\.\\d+\\.\\d+\\.\\d+")) {
    System.out.println("IP格式不正确,请重新输入!");
    return;
}

步骤3: 解析IP段

// 解析IP段为起始IP和结束IP
String[] ips = ipRange.split("-");
String startIP = ips[0];
String endIP = ips[1];

步骤4: 匹配IP

// 将IP转换为long型便于比较
long start = ipToLong(startIP);
long end = ipToLong(endIP);

// 比较要匹配的IP是否在范围内
if (ipToLong(ip) >= start && ipToLong(ip) <= end) {
    System.out.println("IP段匹配成功!");
} else {
    System.out.println("IP段匹配失败!");
}

步骤5: 输出结果

// 根据匹配结果输出相应信息

完整代码示例

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入IP段:");
        String ipRange = scanner.nextLine();

        if (!ipRange.matches("\\d+\\.\\d+\\.\\d+\\.\\d+-\\d+\\.\\d+\\.\\d+\\.\\d+")) {
            System.out.println("IP格式不正确,请重新输入!");
            return;
        }

        String[] ips = ipRange.split("-");
        String startIP = ips[0];
        String endIP = ips[1];

        long start = ipToLong(startIP);
        long end = ipToLong(endIP);

        if (ipToLong(ip) >= start && ipToLong(ip) <= end) {
            System.out.println("IP段匹配成功!");
        } else {
            System.out.println("IP段匹配失败!");
        }
    }

    // IP转换为long型
    public static long ipToLong(String ip) {
        String[] ipArray = ip.split("\\.");
        long result = 0;
        for (int i = 0; i < 4; i++) {
            result = result << 8 | Integer.parseInt(ipArray[i]);
        }
        return result;
    }
}

结束语

通过以上步骤,你可以实现IP段匹配的功能了。希望这篇文章对你有帮助,加油!