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

Java编程求助:如何移除反转后二进制数的前导零

实现方案

你现有的代码已经完成了前3步的需求,第4步移除前导零可以直接复用你第三步统计到的前导零长度,不需要额外复杂逻辑,完整修改后的代码如下:

import java.util.*;

class Main {
  public static void main(String[] args) {
    int woord = 100;
    
    // 1. 数字转二进制
    String bin = Integer.toBinaryString(woord);
    // 2. 反转二进制并输出
    String reversedBin = new StringBuilder(bin).reverse().toString();
    System.out.println("反转后的二进制:" + reversedBin);

    // 3. 统计前导零数量
    String[] parsed = reversedBin.split("1");
    int leadingZeroCount = parsed.length > 0 ? parsed[0].length() : 0;
    System.out.println("反转后的前导零数量:" + leadingZeroCount);

    // 4. 移除所有前导零
    String removedLeadingZeroBin = reversedBin.substring(leadingZeroCount);
    // 兼容输入为0的特殊情况,避免返回空字符串
    if (removedLeadingZeroBin.isEmpty()) {
      removedLeadingZeroBin = "0";
    }
    System.out.println("移除前导零后的二进制:" + removedLeadingZeroBin);

    // 5. 转成十进制数字输出
    int result = Integer.parseInt(removedLeadingZeroBin, 2);
    System.out.println("最终转换后的数字:" + result);
  }
}

补充说明

如果不想复用前导零统计结果,也可以用正则替换的方式一步完成前导零移除:

// 正则^0+表示匹配字符串开头所有连续的0
String removedLeadingZeroBin = reversedBin.replaceFirst("^0+", "");
// 同样加空值判断
if (removedLeadingZeroBin.isEmpty()) {
  removedLeadingZeroBin = "0";
}

以输入100为例,运行输出如下:

反转后的二进制:0010011
反转后的前导零数量:2
移除前导零后的二进制:10011
最终转换后的数字:19

内容的提问来源于stack exchange,提问作者Sjoerd van Bussem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:24:03