每次使用时,如何获取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));

10-07 22:21