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

Java整数展开形式代码输出不符预期,请求排查解决

问题分析与解决方案

嘿,我一眼就瞅出问题啦——你写的数字展开方法为啥每一项都多了一位零?咱们来拆解下:

核心问题:零的数量计算错误

你的makesZero方法是用来生成对应位数的零,但你传给它的参数s.length() - i多算了1位!举个实际例子,拿数字9256来说,它的字符串长度是4:

  • 当i=0(对应字符'9'),你传的是4-0=4,生成4个零,结果就变成了90000,但实际上千位只需要3个零(4-0-1=3);
  • 当i=1(对应字符'2'),你传的是4-1=3,生成3个零变成2000,但百位只需要2个零(4-1-1=2)。

这就是为啥你的输出每一项都多了一位零!

修正后的完整代码

我帮你补全了没写完的makesZero方法,同时修正了零的数量计算逻辑:

class Kata {
    public static String expandedForm(int num) {
        String s = String.valueOf(num);
        StringBuilder result = new StringBuilder();
        for(int i = 0; i < s.length(); i++) {
            if(s.charAt(i) == '0') continue;
            // 关键修正:这里减去1,得到正确的零的数量
            result.append(s.charAt(i) + makesZero(s.length() - i - 1));
            if(i != s.length() - 1) result.append(" + ");
        }
        return result.toString();
    }
    
    // 补全makesZero方法:根据count生成对应数量的零
    public static String makesZero(int count) {
        StringBuilder zeros = new StringBuilder();
        for(int j = 0; j < count; j++) {
            zeros.append('0');
        }
        return zeros.toString();
    }
}

测试验证

现在输入9256,就能得到你预期的输出:9000 + 200 + 50 + 6啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:55:52