我一般都是第一次感到困惑.我昨晚在几分钟内编写了这段代码,效果很好.现在突然扩展我的列表之后它会抛出一个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)
谁能指出我做错了什么?
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等于列表中元素的索引.