You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现IP地址octet校验时非法场景错误输出如何修复?

问题根因

你当前代码的多余输出来自于每段octet校验后额外添加的if (invalid)打印octet值的逻辑:只要任意一个octet被判定非法,invalid变量就会被置为true,后续所有octet对应的这段输出逻辑都会被触发,最终会输出全部4个octet的值,和你的需求冲突。

修复方法

直接删除4段多余的octet值输出代码即可,若需要多个非法octet的提示信息分行展示,可将原来的System.out.print改为System.out.println避免提示内容挤在同一行。调整后完整可运行代码如下:

import java.util.Scanner;

public class IpValidator {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 接收4个octet输入
        System.out.println("Please enter the first octet:");
        int oct1 = scan.nextInt();
        
        System.out.println("Please enter the second octet:");
        int oct2 = scan.nextInt();

        System.out.println("Please enter the third octet:");
        int oct3 = scan.nextInt();

        System.out.println("Please enter the fourth octet:");
        int oct4 = scan.nextInt();

        boolean invalid = false;

        // 校验第1个octet
        if (oct1 < 1 || oct1 > 255){
           System.out.println("Octet 1 is invalid.");
           invalid = true;
        }
        // 校验第2个octet
        if (oct2 < 0 || oct2 > 255){
           System.out.println("Octet 2 is invalid.");
           invalid = true;
        }
        // 校验第3个octet
        if (oct3 < 0 || oct3 > 255){
           System.out.println("Octet 3 is invalid.");
           invalid = true;
        }
        // 校验第4个octet
        if (oct4 < 1 || oct4 > 254){
           System.out.println("Octet 4 is invalid.");
           invalid = true;
        }

        // 所有octet合法时输出IP地址
        if (!invalid) {
           System.out.println("IP address: " + oct1 + "." + oct2 + "." + oct3 + "." + oct4);
        }
        scan.close();
    }
}
效果验证
  • 所有octet合法:正常输出点分十进制格式的IP地址
  • 存在非法octet:仅输出对应编号的octet无效提示,不会输出任何octet值,完全符合需求

内容的提问来源于stack exchange,提问作者Orion27

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:24:05