Android:在文本文件中填充微调器

时间:2014-03-10 11:35:32

标签: java android indexoutofboundsexception

我希望在我的主机上的文本文件中填充微调器。 文本文件内容以“\ n”字符分隔:

Afghanistan
Albania
Algeria
Andorra
Angola

我写了这段代码但是我犯了这个错误:

03-10 12:32:07.716: E/AndroidRuntime(7670): 
FATAL EXCEPTION: Thread-69056
03-10 12:32:07.716: 

E/AndroidRuntime(7670): 
java.lang.ArrayIndexOutOfBoundsException: 
length=91; index=91

                    bo.write(buffer);
                    String s = bo.toString();

                    final Vector<String> str = new Vector<String>();
                    String[] line = s.split("\n");
                    int index = 0;
                    while (line[index] != null) {
                        str.add(line[index]);
                        index++;
                    }

4 个答案:

答案 0 :(得分:1)

你需要改变条件.. 有了这个:

while (line[index] != null) {
   str.add(line[index]);
   index++;
}

如果说行的大小是10,则index ++将使它成为11。 因此,行[11]不会为空,而是抛出ArrayIndexOutOfBoundsException

将条件更改为:

for(int i=0;i<line.length;i++) {
    if(line[i] != null) {
       str.add(line[index]);
    }
}

答案 1 :(得分:1)

您需要通过for循环

中的String数组的长度进行检查
for(int i=0;i<line.length;i++) {
if(line[i] != null) {
   str.add(line[index]);
}
}

答案 2 :(得分:0)

将代码更改为:

bo.write(buffer);
String s = bo.toString();
final Vector<String> str = new Vector<String>();
String[] line = s.split("\n");
int index = 0;
while (index < line.length) {
str.add(line[index]);
index++;
}

您正在获取java.lang.ArrayIndexOutOfBoundsException,因为您没有对行数组进行绑定检查。

答案 3 :(得分:0)

应该是:

int index = 0, length = line.length;
while (index < length) {
   str.add(line[index++]);
}