ArrayList访问器方法不返回任何值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (48)

它旨在执行一次可转让的选举; 现在我需要得到一个ArrayList<Candidate>Candidate对象。在构造函数中,这个过程工作得很好; 但是,一旦我尝试使用访问器方法ArrayList返回空。代码如下:

import java.util.*;
public class Election {

    public ArrayList<Candidate> candidates = new ArrayList<Candidate>();

    Election(int numVotes) {
        String name;
        ArrayList<Candidate> candidates = new ArrayList<Candidate>();
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Enter the candidates you want in the election.");
        System.out.println("Enter -1 once you have listed all the candidates.");
        System.out.print("Start entering candidates: ");
        name = keyboard.nextLine();
        while (!name.equals("-1")) {
            candidates.add(new Candidate(name));
            System.out.print("Ok, enter a new candidate or -1: ");
            name = keyboard.nextLine();

        }

        //Works fine here
    }

    public ArrayList<Candidate> getCandidateList() {   
        //Keeps returning empty list
        //System.out.println(candidates);
        return this.candidates;    
    }
} 
提问于
用户回答回答于

你正在构造函数中创建一个新的ArrayList变量,而应该这样做 this.candidates = new ArrayList<Candidate>();

另外,在你的构造函数中拥有所有的逻辑是一个坏习惯,你应该改用一个addCandidates()方法

用户回答回答于
public ArrayList<Candidate> candidates = new ArrayList<Candidate>();
Election(int numVotes)
{
    String name;
    ArrayList<Candidate> candidates = new ArrayList<Candidate>();
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

你正在创建一个不同的数组列表并且“隐藏” candidates成员变量。它应该是

    this.candidates = new ArrayList<Candidate>();

所属标签

可能回答问题的人

  • gulu丶咕噜

    0 粉丝1 提问5 回答
  • 华讯云

    0 粉丝0 提问4 回答
  • EatRice

    16 粉丝0 提问4 回答
  • 发条丶魔灵1

    9 粉丝526 提问3 回答

扫码关注云+社区

领取腾讯云代金券