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

如何通过单个十进制输入同时得到二进制、八进制、十六进制输出?

问题解答:单输入实现多进制转换

嘿,我来帮你把这个问题理清楚~

你猜的完全没错!问题核心就在于第一个while循环直接修改了变量i的取值。在循环里你执行了i /= 2,这个操作会不断把i的值缩小,直到i变成0才会退出循环。等你想转八进制的时候,i已经是0了,再用它做计算自然得不到正确结果。

接下来给你两种简单的解决方案,满足你“单输入得到三种进制输出”的需求:

方案1:保存原始输入值

在第一次转换前,把用户输入的原始值存到一个临时变量里,之后所有转换都用这个临时变量的副本操作,避免修改原始输入值:

import java.util.Scanner;
public class LA {
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        int original = scn.nextInt(); // 保存原始输入值,不修改它

        // 二进制转换
        int i = original;
        String binary = "";
        while (i > 0) {
            binary = (i % 2) + binary;
            i /= 2;
        }
        System.out.println("b " + binary);

        // 八进制转换
        int o = original;
        String octal = "";
        while (o > 0) {
            octal = (o % 8) + octal;
            o /= 8;
        }
        System.out.println("o " + octal);

        // 十六进制转换(处理10-15对应a-f的情况)
        int h = original;
        String hex = "";
        while (h > 0) {
            int remainder = h % 16;
            char c = remainder < 10 ? (char)('0' + remainder) : (char)('a' + remainder - 10);
            hex = c + hex;
            h /= 16;
        }
        System.out.println("h " + hex);
    }
}

方案2:使用Java内置的进制转换方法

Java已经帮我们封装好了现成的进制转换工具,不用自己写循环,代码更简洁高效,非常适合初学者:

import java.util.Scanner;
public class LA {
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        int num = scn.nextInt();

        // 直接调用内置方法完成转换
        String binary = Integer.toBinaryString(num);
        String octal = Integer.toOctalString(num);
        String hex = Integer.toHexString(num);

        // 按照要求的格式输出
        System.out.println("b " + binary);
        System.out.println("o " + octal);
        System.out.println("h " + hex);
    }
}

测试输入2017的话,两种方案都会输出:

b 11111100001
o 3741
h 7e1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 10:47:37