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

Java数字位数统计方法异常求助:前置零导致计数错误

问题分析与解决方案

你的问题根源出在Java的int类型无法保留前导零,而且数字开头带0会被Java当作八进制数解析:

  • 比如你输入的01011100,Java会把它当成八进制数,转成十进制是33856,你的方法统计的是这个数的位数(7位),不是你预期的8位;
  • 00101111作为八进制转十进制是4431,统计出来是6位,自然和预期不符。

另外,就算你输入的是十进制的带前导零数字,int类型也会自动忽略前导零,所以用int作为参数本身就没法实现你要的“统计带前导零的数字位数”需求。


正确的实现方式

要统计带前导零的数字位数,必须用字符串作为输入参数,因为只有字符串能保留前导零信息。

实现代码

public static int countDigits(String numStr) {
    // 先校验输入是否为纯数字字符串
    if (numStr == null || !numStr.matches("\\d+")) {
        throw new IllegalArgumentException("输入必须是有效的纯数字字符串");
    }
    return numStr.length();
}

使用示例

  • 调用countDigits("01011100")会返回8;
  • 调用countDigits("00101111")会返回8。

如果你的输入来源是用户输入或者文件读取的数字串,直接用字符串传递就可以完美解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:04:56