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

如何编写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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:55:23