我正在为我的任务而苦苦挣扎,我不知道如何在列表中添加另一个元素。

import java.util.ArrayList;

public class Ballot {
    private ArrayList<Candidate> ballot;
    private String officeName;

    public Ballot(String officeName) {
        this.officeName = officeName;
        ArrayList<Candidate> ballot = new ArrayList<Candidate>();
    }

    public String getOfficeName() {
        return officeName;
    }

    public void addCandidate(Candidate c) {
        ballot.add(c);
    }

    public ArrayList<Candidate> getCandidates() {
        return ballot;
    }

    public static void main(String[] args) {
        Ballot b = new Ballot("Election");
        b.addCandidate(new Candidate("Sarah", "President"));
        System.out.println(b);
    }
}


当我尝试运行文档时,它抛出一个NullPointerException。我究竟做错了什么?

最佳答案

构造函数初始化一个名为ballot的局部变量,该变量隐藏具有相同名称的数据成员。然后,当您尝试添加到它时,它会以NullPointerException失败,因为它从未被初始化。如果初始化它,则应该可以:

public Ballot(String officeName) {
    this.officeName = officeName;
    ballot = new ArrayList<Candidate>(); // Here!
}

10-08 06:01