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

二进制转十进制Java程序问题:错误提示语句无法触发

解决二进制转十进制程序的错误提示问题

我来帮你搞定这个问题~你的代码现在有两个核心问题导致错误提示无法正常工作:

  1. 错误提示语句无条件执行:不管输入的二进制是否合法,System.out.println("Invalid binary number entered!");都会在正常输出后打印,这显然不是你想要的效果。
  2. 非法输入会直接触发异常崩溃:Integer.parseInt(binary,2)遇到非0/1的字符时,会直接抛出NumberFormatException,程序会终止运行,根本走不到错误提示那一行。

修正后的代码

import java.util.Scanner;

public class BinaryToDec {
    public static void main(String []args ) {
        String binary;
        int dec;
        Scanner scan = new Scanner(System.in);
        
        System.out.print("Enter a binary number: ");
        binary = scan.nextLine();
        
        try {
            // 尝试解析二进制字符串
            dec = Integer.parseInt(binary, 2);
            System.out.printf("The corresponding decimal value is: %d\n", dec);
        } catch (NumberFormatException e) {
            // 解析失败时执行错误提示
            System.out.println("Invalid binary number entered!");
        }
    }
}

关键修改说明

  • 异常捕获机制:用try-catch块包裹可能抛出异常的解析逻辑。当输入不是合法二进制时,Integer.parseInt会抛出NumberFormatException,此时程序会跳转到catch块执行错误提示,而不是直接崩溃。
  • 调整错误提示位置:把错误提示移到catch块内,确保只有在输入非法时才会打印。
  • 移除原错误提示语句:删掉原来放在正常逻辑后面的错误提示,避免无条件执行。

额外优化建议(可选)

如果你想在解析前先验证输入是否只包含0和1,可以加一个简单的正则检查,这样能提前拦截非法输入,避免异常抛出:

// 在try块前添加输入验证
if (!binary.matches("[01]+")) {
    System.out.println("Invalid binary number entered!");
    return; // 终止程序
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:39:47