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

Java while循环实现十进制转二进制时字符串反转失效求助

十进制转二进制代码问题修复

原代码的核心问题:

  • 多余的奇偶分支:十进制转二进制的逻辑对所有正整数都适用,不需要分开处理奇偶,重复代码反而容易引入错误。
  • 反转逻辑无效:每次只对单个字符的字符串反转,单个字符反转后还是它本身,等于没做任何反转操作。正确的做法是先把所有余数拼接成完整字符串,再整体反转。
  • 偶数分支计算顺序错误:先执行originalnum /= 2再取余,会丢失第一个余数,导致结果少一位。

修正后的代码

import java.util.Scanner;

public class NumberConversion {
    public static void main(String[] args) {
        Scanner getnumber = new Scanner(System.in);
        System.out.print("Enter number: ");
        int originalnum = getnumber.nextInt();
        
        // 处理输入0的特殊情况
        if (originalnum == 0) {
            System.out.println("0");
            return;
        }
        
        int remainder;
        String binary_temp = "";

        // 统一处理所有正整数,循环取余并拼接
        while (originalnum > 0) {
            remainder = originalnum % 2;
            originalnum /= 2;
            binary_temp += String.valueOf(remainder);
        }

        // 整体反转字符串得到正确的二进制结果
        String binarynum = new StringBuffer(binary_temp).reverse().toString();
        System.out.println(binarynum);
    }
}

代码说明:

  1. 移除了冗余的奇偶判断,用同一个while循环处理所有正整数。
  2. 初始化空字符串binary_temp,每次将余数拼接到字符串末尾,此时得到的是反转的二进制序列。
  3. 循环结束后,通过StringBuffer整体反转字符串,得到正确的二进制数。
  4. 增加了输入0的特殊处理,避免输入0时无输出的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:10:31