为了账号安全,请及时绑定邮箱和手机立即绑定

请问在Java语言中StringIndexOutOfBoundsException异常的问题?

请问在Java语言中StringIndexOutOfBoundsException异常的问题?

qq_花开花谢_0 2019-07-09 11:07:13
Java语言中StringIndexOutOfBoundsException异常的问题
查看完整描述

6 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

i的初始值为ao.indexOf("c"),即2;
在循环体中,只有当ao.charAt(j)为f时才会给i赋值,这时i为5,仍然符合i < 6,循环仍然会执行。也即,这里会有死循环。而j的值每循环一次就会增加1,那么执行ao.charAt(j)时,当然会有超出边界的异常。

查看完整回答
反对 回复 2019-07-13
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

为什么写 i=j ?
因为你想通过这个法子退出for循环
只可惜呀,人算不如天算啊,你算错了。差了1
if语句起作用时,j=5,此时i也就等于5了。而ao.indexOf("g")等于6。for循环没有退出去,而是继续运行。j继续自增。当增加到8时,再次进入for循环,首先执行if语句里的ao.charAt(j)。计算它的时候报的错,因为ao共有8个字符,而字符坐标从0开始记,所以字符最大坐标为7.而现在你要找坐标为8的字符,所以抛了这么个异常。

查看完整回答
反对 回复 2019-07-13
?
四季花海

TA贡献1811条经验 获得超5个赞

问题出在参数 j 的大小没有在 for 条件中控制,导致 out 需要增加条件 i<ao.indexOf("g") && j<ao.length()


查看完整回答
反对 回复 2019-07-13
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

java.lang.StringIndexOutOfBoundsException:字符串索引超出范围,越界了。你再看看你的程序是否存在这种问题。

查看完整回答
反对 回复 2019-07-13
?
侃侃无极

TA贡献2051条经验 获得超10个赞

while(rs.next())
{
String max = rs.getString("maxint"); //获得最大的字段
String maxi = max.substring(2,max.length()); //截取子字符串
newmax = "CB" + String.valueOf(Integer.parseInt(maxi) + 1);
}

我估计是不是
String max = rs.getString("maxint"); //获得最大的字段
这句话没有获得到值 导致了 null或者 长度<3
然后下面再 max.substring(2,max.length()); //截取子字符串

查看完整回答
反对 回复 2019-07-13
?
ITMISS

TA贡献1871条经验 获得超8个赞

String maxi = max.substring(2,max.length());
max字符串需要满足字符串长度大于等于2,包括不能为空值。
这句话之前先进行判读if(max.length()>=2 && max!=null)

查看完整回答
反对 回复 2019-07-13
  • 6 回答
  • 0 关注
  • 13250 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信