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

调用charAt()后应用崩溃,代码问题排查及修复咨询

问题分析与修复方案

嘿,这个问题我太熟了——你遇到的是Java里经典的字符串索引越界异常,直接导致了应用崩溃,咱们一步步拆解清楚:

核心问题:循环边界踩坑了

Java里字符串的索引是从0开始算的,比如说你这个"Hello world"长度是11,那有效索引范围是0到10(最后一个字符d的索引是10)。但你的循环条件写的是x <= txt.length(),这就意味着当x等于11的时候,你还会去调用txt.charAt(x)——这时候已经超出了字符串的有效索引范围,JVM直接就抛出StringIndexOutOfBoundsException,应用可不就强制关闭了嘛!

另外还有个小细节容易忽略:你声明了int count;但没初始化,Java里局部变量是没有默认值的,要是直接这么用,编译阶段可能就报错,就算侥幸过了编译,运行时也可能拿到奇怪的数值,这个得补上初始化。

修复后的代码

把循环条件改成x < txt.length(),同时给count初始化,代码就正常了:

String txt = "Hello world";
int count = 0; // 初始化计数器,避免局部变量未赋值问题
for(int x = 0; x < txt.length(); x++) {
    if (txt.charAt(x) == ' ') {
        count++;
    }
}

额外小技巧(可选)

要是你只是想统计字符串里的空格数量,其实不用手动写循环,Java有更简洁的写法:

  • 用Java 8流:
long count = txt.chars().filter(c -> c == ' ').count();
  • 用正则分割:
int count = txt.split(" ", -1).length - 1;

这些方法既简洁,还能避免手动循环容易犯的索引错误,你可以根据场景选着用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:39:01