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

Java实现统计字符串中连续数字序列的个数

这问题挺常见的,核心就是要识别连续的数字序列,而非单个数字的个数对吧?给你写个实用的Java实现,逻辑清晰还能覆盖各种边界情况:

解决方案代码

如果是固定输入的场景,实现如下:

public int countNums() {
    String input = "I have 22 bananas ,121 pencils, and p32 apples";
    int count = 0;
    boolean inNumber = false;
    
    for (char c : input.toCharArray()) {
        // 检查当前字符是否为数字
        if (Character.isDigit(c)) {
            if (!inNumber) {
                // 从非数字切换到数字,说明新的数字序列开始,计数+1
                count++;
                inNumber = true;
            }
        } else {
            // 遇到非数字,标记退出数字序列
            inNumber = false;
        }
    }
    return count;
}

如果想让方法更通用(支持任意输入字符串),可以改成带参数的版本,同时处理空值/空字符串的边界情况:

public int countNums(String input) {
    // 提前处理空输入,避免空指针异常
    if (input == null || input.isEmpty()) {
        return 0;
    }
    
    int count = 0;
    boolean inNumber = false;
    
    for (char c : input.toCharArray()) {
        if (Character.isDigit(c)) {
            if (!inNumber) {
                count++;
                inNumber = true;
            }
        } else {
            inNumber = false;
        }
    }
    return count;
}
逻辑解释
  • 用inNumber这个布尔变量跟踪当前是否处于连续数字序列中,初始状态为false(未进入数字序列)
  • 遍历字符串的每个字符:
    • 遇到数字时,如果之前不在数字序列里,说明触发了一个新的连续数字序列,计数器加1并标记进入数字序列
    • 遇到非数字字符时,标记退出数字序列,等待下一个可能的数字序列开始
  • 最终返回的计数器值,就是连续数字序列的总个数

测试你的示例输入时,这个方法会返回3,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:47:43