读取并将String放入数组时,会出现这个非常烦人的错误

时间:2012-09-21 20:55:00

标签: java

这是我在Dropbox中下载和阅读文件中的文本的代码。版本是一个URL。

BufferedReader in = new BufferedReader(new InputStreamReader(version.openStream()));
String inputLine;
int line = 0;
try{
    while ((inputLine = in.readLine()) != null){
        strings[line] = new String(inputLine);
        line++;
    }
} catch (Exception e){
    e.printStackTrace();
}

虽然,我觉得这个很烦人的错误。

java.lang.ArrayIndexOutOfBoundsException:1
at sky.the.venture.client.Download.getCredits(Download.java:38)
at sky.the.venture.client.LauncherFrame.credits(LauncherFrame.java:315)
at sky.the.venture.client.LauncherFrame。(LauncherFrame.java:49)
at sky.the.venture.Destiny。(Destiny.java:13)
在Start.main(Start.java:11)​​

因此,出错的部分是Download.java:38。这是

strings[line] = new String(inputLine);

所以,如果有人可以提供帮助,我会非常高兴= D

2 个答案:

答案 0 :(得分:3)

大概你只创建了一个这样的数组:

String[] strings = new String[1];

数组不会在Java中自行调整大小 - 实际上,它们无法调整大小。如果您想要动态调整大小的集合,请使用List<E>实施例,例如ArrayList<E>

List<String> lines = new ArrayList<String>();
while ((inputLine = in.readLine()) != null) {
    lines.add(inputLine);
}

答案 1 :(得分:2)

您似乎正在尝试写入尚未分配的strings数组的元素。例如,如果您已分配类似strings[10]的内容,并且lines增加到11,则会收到ArrayIndexOutOfBoundsException异常。