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

Java语言中StringIndexOutOfBoundsException异常的问题


qq_花开花谢_0
浏览 13251回答 6
6回答

潇潇雨雨

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

哆啦的时光机

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

四季花海

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

小怪兽爱吃肉

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

侃侃无极

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()); //截取子字符串

ITMISS

String maxi = max.substring(2,max.length());max字符串需要满足字符串长度大于等于2,包括不能为空值。这句话之前先进行判读if(max.length()>=2 && max!=null)
打开App,查看更多内容
随时随地看视频慕课网APP