每次使用时,如何获取Observation
方法以将numberofObs
数组中的单个元素增加1
?
我收到此错误:线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:0
public class Database {
private ArrayList <String> databaseOfBirds = new ArrayList<String>();
private int[] numberofObs = new int[databaseOfBirds.size()];
public void add(String name, String latinName) {
databaseOfBirds.add(name + "(" + latinName + ")");
}
public String Observation(String birdname){
for(int i = 0; i < databaseOfBirds.size(); i++) {
if(databaseOfBirds.get(i).contains(birdname)) {
numberofObs[i]++;
return "";
}
}
return "Is not a bird!";
}
}
最佳答案
当您创建numberofObs数组时,它的长度为零,因为此时databaseOfBirds为空。除非您使用一些未列出的代码来增加数组,否则您将在第一次发现鸟时得到NullPointerException。
您可以通过将numberofObs设为列表来解决此问题:
private List<Integer> numberofObs = new ArrayList<>();
然后在您的add方法中添加以下行:
numberofObs.add(0);
最后,改变
numberofObs[i]++;
至
numberofObs.set(i, 1 + numberofObs.get(i));