突然ArrayIndexOutOfBoundsException

时间:2013-11-26 17:34:45

标签: java

我常常第一次感到困惑。我昨晚在几分钟内编写了这段代码,效果很好。现在,在扩展我的列表之后突然抛出一个ArrayIndexOutOfbounds:63

private final String[] itemName = new String['?'];
private final String[] itemID = new String['?'];
private void loadList() throws IOException {
    final URL itemListURL = new URL("testlist.txt");
    final BufferedReader buffer = new BufferedReader(
            new InputStreamReader(itemListURL.openStream()));
    String line;
    while ((line = buffer.readLine()) != null) {


        final String[] itemListArray = line.split(",");

        final int i = Integer.parseInt(itemListArray[0]);

        this.itemID[i] = itemListArray[0];
        this.itemName[i] = itemListArray[1];

    }
    buffer.close();
}

有人能指出我做错了什么吗?

1 个答案:

答案 0 :(得分:5)

private final String[] itemName = new String['?'];
private final String[] itemID = new String['?'];

在这里,您要创建大小为63的数组,这是问号('?')的ASCII代码点。

您正在寻找的是列表:如果需要,它们会增长。

private final List<String> itemName = new ArrayList<String>();

我认为在你的情况下,你甚至不需要itemID,因为itemID等于列表中元素的索引。