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

Java中大小写转换时抛出StringIndexOutOfBoundsException问题求助

排查StringIndexOutOfBoundsException异常原因及解决方法

嘿,这个问题简直是Java新手入门的经典坑!咱们先来看你遇到的异常:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6
at java.lang.String.charAt(Unknown Source)
at newproject.chars.main(chars.java:11)

异常原因

问题出在你的循环条件上!Java里字符串的索引是从0开始计数的,比如你的字符串"AnImAl",它的长度是6,对应的索引范围是0到5(包含这两个值)。而你的循环写的是:

for(int b=0;b<=a.length();b++)

这里a.length()返回的是6,当循环变量b等于6的时候,代码会执行a.charAt(6),但字符串根本没有索引为6的字符,直接就触发了索引越界异常。

解决方法

把循环的终止条件改成b < a.length(),这样循环会在b等于5的时候结束,不会访问到不存在的索引。

修正后的完整代码

public class chars {
    public static void main(String[] args) {
        String a = "AnImAl";
        // 把<=改成<,避免索引越界
        for(int b=0;b<a.length();b++) {
            char c= a.charAt(b);
            if(c>=65 && c<=90) {
                c=(char)((c + 32));
            }
            System.out.print(c);
        }
    }
}

额外小建议

其实Java自带了更简洁的大小写转换方法,不用手动计算ASCII值,比如Character.toLowerCase(c),代码会更易读:

public class chars {
    public static void main(String[] args) {
        String a = "AnImAl";
        for(int b=0;b<a.length();b++) {
            char c= a.charAt(b);
            c = Character.toLowerCase(c);
            System.out.print(c);
        }
    }
}

甚至还可以直接用String的toLowerCase()方法一步到位:System.out.println(a.toLowerCase());,这样连循环都省了😉

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:07:49