-2

这是我在 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)
at Start.main(Start.java:11)

所以,错误的部分是 Download .java:38。哪个是

strings[line] = new String(inputLine);

所以如果有人能帮忙,我会很高兴=D

4

2 回答 2

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);
}
于 2012-09-21T20:56:32.020 回答
2

您似乎正在尝试写入strings尚未分配的数组元素。例如,如果您分配了类似strings[10], 并lines递增到 11,您将收到 ArrayIndexOutOfBoundsException 异常。

于 2012-09-21T20:58:02.227 回答