Java 在读取字符串并将其放入数组时,会出现这个非常恼人的错误

Java 在读取字符串并将其放入数组时,会出现这个非常恼人的错误,java,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

这是我在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
在sky.the.venture.client.Download.getCredits(Download.java:38)
在sky.the.venture.client.launchframe.credits(launchframe.java:315)
在sky.the.venture.client.launchframe.(launchframe.java:49)
在天空.the.venture.Destiny.(Destiny.java:13)
at Start.main(Start.java:11)

因此,出现错误的部分是Download.java:38。那是

strings[line] = new String(inputLine);

如果有人能帮忙,我真的很高兴=D

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

String[] strings = new String[1];
数组在Java中不会调整自身大小——事实上,它们无法调整大小。如果需要动态调整大小的集合,请使用
列表
实现,例如
阵列列表

List line=new ArrayList();
而((inputLine=in.readLine())!=null){
行。添加(输入行);
}

您似乎正试图写入尚未分配的
字符串
数组的元素。例如,如果您分配了类似于
字符串[10]
,并且
增加到11,您将收到ArrayIndexOutOfBoundsException异常。

使用列表而不是数组,它将增长到您喜欢的任何长度。数组没有足够的空间容纳新元素。您想调整它的大小吗?“真烦人的错误”-还有其他类型的错误吗?但是如何将列表返回到字符串[]?使用
lines.ToArray()
返回字符串数组。。。。如果你真的需要的话。理想的情况是,事后再处理清单。我同意你的看法,乔恩,我不是有意要踩你的脚
List<String> lines = new ArrayList<String>();
while ((inputLine = in.readLine()) != null) {
    lines.add(inputLine);
}