Java - 从文本文件

时间:2015-11-06 10:57:42

标签: java arraylist nullpointerexception fileinputstream

我有以下类BallotPaper,它在LinkedList中记录一组投票:

import java.util.LinkedList;

public class BallotPaper {

    private LinkedList<String> votes;

    public BallotPaper() {

    }

    public void addVote(String candidateName) {
        votes.add(candidateName);
    }

    public LinkedList<String> getVotes() {
        return votes;
    }

}

我有一个包含投票列表的文本文件,如下所示:

John Jack James Fred
John Jack James Fred
Fred Jack John James
Fred Jack John James
Jack John James Fred

在我的主类中,我有一个BallotPaper对象的ArrayList。文本文件中的每一行都会泄露四个名称,每个名称都需要添加到一个BallotPaper对象中,然后存储在ArrayList中。这是我读取文本文件的代码:

private ArrayList<BallotPaper> votes = new ArrayList<>();

public void readTextFile(String fileLocation) throws FileNotFoundException {
    FileInputStream fileIn = new FileInputStream(fileLocation);
    Scanner scanner = new Scanner(fileIn);

    while(scanner.hasNextLine()) {
        votes.add(new BallotPaper());
        for(int i=0; i<4; i++) {
            String name = scanner.next().trim();
            if(!name.equals("")) {
                votes.get(votes.size() - 1).addVote(name);
            }
        }
    }
}

所以我的目标是让ArrayList包含5个元素,每个元素都是BallotPaper对象,各自的LinkedList中有4个条目。我目前收到以下错误:

Exception in thread "main" java.lang.NullPointerException
    at BallotPaper.addVote(BallotPaper.java:12)
    at Model.readTextFile(AVSModel.java:50)

1 个答案:

答案 0 :(得分:1)

你还没有把你的选票列表贬低。更改行

 private LinkedList<String> votes;

 private LinkedList<String> votes = new LinkedList<String>();