我常常第一次感到困惑。我昨晚在几分钟内编写了这段代码,效果很好。现在,在扩展我的列表之后突然抛出一个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();
}
有人能指出我做错了什么吗?
答案 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等于列表中元素的索引。