为什么会出现这个异常?

逍遥自在” 2019-08-08 10:25:05

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 9
public class test {
public static void main(String [] args)
{
String str = "HelloWorld";
StringBuffer buffer = new StringBuffer();
for(int i=str.length()-1; i>=0; i--)
{
char b = str.charAt(i);
if(b>='A'&&b<='Z')
{
buffer.append(String.valueOf(b).toLowerCase());
//先通过静态函数value()把b转换为字符串然后再调用toLowerCase()
}
else
{
buffer.append(String.valueOf(b).toUpperCase());
}
System.out.print(buffer.charAt(i));
}
System.out.println(buffer);
}
}
...全文
207 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ren_cy 2019-08-30
  • 打赏
  • 举报
回复
StringIndexOutOfBoundsException翻译一下就明白了字符串下标越界异常,有遍历或者取值,用到下标越界了。。
shlroa 2019-08-09
  • 打赏
  • 举报
回复
StringIndexOutOfBoundsException 字符串下标越界
usecf 2019-08-09
  • 打赏
  • 举报
回复
看提示 字符串下标越界了
狡猾的bug 2019-08-08
  • 打赏
  • 举报
回复
下标越界了,因为你的 i 是从9开始的,buffer刚开始的长度肯定小于9的,可以改成下面这种方式:
  • 打赏
  • 举报
回复
因为在这一句里,你打印的位置不对
System.out.print(buffer.charAt(i));
比如第一次执行循环,这个时候buffer里只有一个字符,但是你传入charAt的参数是9,所以会报错。 可以把这行改为
System.out.print(buffer.charAt(str.length()-i-1));

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧