如何编写Java方法统计输入数字中0-9各数字的出现次数?
Java方法实现:统计0-9数字出现次数
正确实现代码
public String countOccurrences(int num) { // 转为字符串并处理负数(取绝对值) String str = String.valueOf(Math.abs(num)); int[] digitCounts = new int[10]; // 索引0对应数字0的计数,以此类推 // 遍历每个字符统计次数 for (int i = 0; i < str.length(); i++) { char currentChar = str.charAt(i); int digit = currentChar - '0'; // 字符转对应数字(利用ASCII码连续性) digitCounts[digit]++; } // 构建要求格式的返回字符串 StringBuilder resultBuilder = new StringBuilder(); for (int i = 0; i < 10; i++) { resultBuilder.append(i).append(" - ").append(digitCounts[i]).append("\n"); } return resultBuilder.toString().trim(); }
原代码存在的问题
- 返回类型错误:原方法返回
double,但我们需要返回包含所有数字计数的结构化结果,String或int[]更符合需求。 - 冗余变量设计:用10个单独的
countX变量非常繁琐,用长度为10的数组可以直接通过索引对应数字,简洁高效。 - 循环逻辑失效:
while循环没有更新goneThrough变量,会导致无限循环;- 循环条件
goneThrough <= str.length()会触发索引越界(字符串索引范围是0到str.length()-1); - 始终取
str.charAt(0),没有遍历所有字符。
- 字符比较错误:直接和数字
0、1比较是错误的,字符'0'的ASCII值是48,需要和字符常量'0'、'1'比较。 - 无效的多return语句:方法执行到第一个
return就会终止,后续return永远不会执行,无法返回所有数字的计数结果。 - 无用代码:
value变量的逻辑完全无效,没有起到任何统计作用。
测试示例
输入7846597,调用方法后返回:
0 - 0 1 - 0 2 - 0 3 - 0 4 - 1 5 - 1 6 - 1 7 - 2 8 - 1 9 - 1
内容的提问来源于stack exchange,提问作者user20146539
相关产品推荐
相关产品推荐

