运行输出以b开头单词的Java程序为何出现溢出异常
问题原因
- 抛出的是
StringIndexOutOfBoundsException字符串索引越界异常,核心问题是while循环的条件判断顺序错误 - Java的逻辑与运算符
&&为短路求值逻辑,会优先执行左侧表达式,只有左侧结果为真时才会执行右侧表达式。你编写的判断顺序为sentence.charAt(j) != ' ' && j<sentence.length(),当j自增到等于字符串长度时,程序会先调用sentence.charAt(j)尝试读取超出字符串边界的索引,直接触发越界异常,不会执行右侧的边界校验逻辑。
修复方案
将while循环的两个条件调换顺序,先做边界校验再读取字符即可解决问题:
while (j < sentence.length() && sentence.charAt(j) != ' ') { // 原有输出逻辑 }
额外优化提示
当前逻辑只能匹配前面带空格的b开头单词,无法识别句子开头第一个单词就是b开头的情况,可以额外补充对字符串首字符的判断规则覆盖这类场景。
内容的提问来源于stack exchange,提问作者Teo
相关产品推荐
相关产品推荐

