【问题标题】:ArrayList accessor method returns no valuesArrayList 访问器方法不返回任何值
【发布时间】:2018-05-28 19:29:23
【问题描述】:

这是我在自己的班级中制作的第一个程序。它旨在执行一次可转让的选举;现在我需要得到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;    
    }
} 

【问题讨论】:

    标签: java arraylist accessor


    【解决方案1】:
    public ArrayList<Candidate> candidates = new ArrayList<Candidate>();
    Election(int numVotes)
    {
        String name;
        ArrayList<Candidate> candidates = new ArrayList<Candidate>();
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    

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

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

    【讨论】:

      【解决方案2】:

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

      另外,将所有逻辑都放在构造函数中是不好的做法,您应该创建一个 addCandidates() 方法

      【讨论】:

        【解决方案3】:

        在这一行:

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

        您定义了一个隐藏类成员的局部变量。删除那条线。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-10
          相关资源
          最近更新 更多