突然ArrayIndexOutOfBoundsException

use*_*561 0 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();
}
Run Code Online (Sandbox Code Playgroud)

谁能指出我做错了什么?

Mar*_*aux 5

private final String[] itemName = new String['?'];
private final String[] itemID = new String['?'];
Run Code Online (Sandbox Code Playgroud)

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

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

private final List<String> itemName = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

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