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
相关产品推荐
相关产品推荐

