java.lang.ArrayIndexOutOfBoundsException: 0

我在分割字符串时,不知道怎么回事就是出现异常,程序如下
String[] strarray=art.split("\\@");

for (i = 0; i < strarray.length; i++)
{
String[] strarray1=strarray[i].split("\\%");

switch(strarray1[0].charAt(0))
{
case 'a':t1a++;break;
case 'b':t1b++;break;
art是文本文件中读出来的
出现异常org.apache.jasper.JasperException: An exception occurred processing JSP page /xinx/huizong.jsp at line 87

84: {
85: String[] strarray1=strarray[i].split("\\%");
86:
87: switch(strarray1[0].charAt(0))
88: {
89: case 'a':t1a++;break;
90: case 'b':t1b++;break;
root cause

java.lang.ArrayIndexOutOfBoundsException: 0
各位大侠能不能看看这是哪出错了,谢谢了!!!
但是把charAt(0)去掉后还是一样包同样的错误的
最新回答
哥特式·浅唱

2024-10-16 08:24:59

分割开来的字符串中,可能存在长度为0的,这样charAt(0)就会报越界错误。
可以先判断一下:
if (strarray1[0].length() > 0) {
switch(strarray1[0].charAt(0))
{
...
}
} else {
... @后紧跟一个%的情况的处理。
}

去掉charAt(0)后应该不会报ArrayIndexOutOfBoundsException的错误的,strarray1应该始终存在第1个元素,要不就是NullPointerException.
流連忘返

2024-10-16 08:04:25

String[] strarray=art.split("\\@"); 通过"\\@"分割后不一定所有的子字符串中都包含"\\%",所以你再通过String[] strarray1=strarray[i].split("\\%"); 分割的时候,就分割不开了,当然会报数组索引越界的异常
情伤己

2024-10-16 08:10:05

strarray1[0].charAt(0)
如果strarray1[0]是空串""
就不存在charAt(0);
改为:

if(!"".equals(strarray1[0]))
{
switch(strarray1[0].charAt(0))
{
case 'a':t1a++;break;
case 'b':t1b++;break;