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
相关产品推荐
相关产品推荐

