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

Java十进制转二进制计算器问题:变量未初始化与终止逻辑失效

解决十进制转二进制计算器的两个问题

问题1:变量未初始化错误

原因

  • decNumber仅在else分支中赋值,但编译器无法识别System.exit(0)会直接终止程序,因此判定存在decNumber未赋值就被remainder = decNumber调用的可能。
  • j变量仅声明未初始化,部分编译器会因此抛出警告。

修复

  • 给decNumber设置初始值(如int decNumber = 0;),确保变量在使用前必然有值。
  • 将j在for循环内声明,避免未初始化的警告。

问题2:输入"stop"无法终止程序

原因

Java中==比较的是字符串对象的内存地址,而非内容;同时原代码只匹配大写的"STOP",无法识别小写输入。

修复

使用equalsIgnoreCase()方法忽略大小写比较字符串内容,替代==。

额外补充:实现循环运行

原代码仅执行一次就结束,需添加外层循环让程序持续接收输入,直到用户输入"stop"终止。


修改后的完整代码

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner myCalc = new Scanner(System.in);
        // 外层循环实现持续运行
        while (true) {
            int remainder, decNumber = 0, i = 1;
            int binaryNumber[] = new int[100];

            System.out.println("Enter a decimal number (input 'stop' to exit): ");
            String decimalNumber = myCalc.nextLine();

            // 忽略大小写判断终止指令
            if (decimalNumber.equalsIgnoreCase("STOP")) {
                System.exit(0);
            }

            try {
                // 捕获非数字输入,避免程序崩溃
                decNumber = Integer.parseInt(decimalNumber);
            } catch (NumberFormatException e) {
                System.out.println("Invalid input! Please enter a valid decimal number or 'stop'.");
                continue;
            }

            remainder = decNumber;
            // 十进制转二进制逻辑
            while (remainder != 0) {
                binaryNumber[i++] = remainder % 2;
                remainder = remainder / 2;
            }

            // 输出二进制结果
            System.out.println("This Binary number is: ");
            for (int j = i - 1; j > 0; j--) {
                System.out.print(binaryNumber[j]);
            }
            System.out.println(); // 换行分隔每次结果
        }
    }
}

代码说明

  1. 新增while(true)外层循环,实现程序持续运行。
  2. 用equalsIgnoreCase("STOP")匹配任意大小写的终止指令。
  3. 给decNumber设置初始值,在for循环内声明j,解决未初始化问题。
  4. 添加try-catch捕获输入非数字的异常,避免程序直接崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:57:09