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

Java ArrayList访问器方法不返回任何值,java,arraylist,accessor,Java,Arraylist,Accessor,这是我用自己的班级制作的第一个节目。它意味着执行一次可转让的选举;现在我需要获取候选对象的数组列表。在构造器内部,过程运行良好;但是,一旦我尝试使用访问器方法,就会返回一个空的ArrayList。代码如下: import java.util.*; public class Election { public ArrayList<Candidate> candidates = new ArrayList<Candidate>(); Election(in

这是我用自己的班级制作的第一个节目。它意味着执行一次可转让的选举;现在我需要获取
候选对象的
数组列表。在构造器内部,过程运行良好;但是,一旦我尝试使用访问器方法,就会返回一个空的
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;    
    }
} 
import java.util.*;
公选{
public ArrayList candidates=new ArrayList();
选举(整数){
字符串名;
ArrayList候选者=新的ArrayList();
扫描仪键盘=新扫描仪(System.in);
System.out.println(“在选举中输入您想要的候选人。”);
System.out.println(“列出所有候选人后输入-1”);
系统输出打印(“开始输入候选人:”);
name=keyboard.nextLine();
而(!name.equals(“-1”)){
候选人。添加(新候选人(姓名));
System.out.print(“好的,输入一个新的候选者或-1:”);
name=keyboard.nextLine();
}
//这里很好用
}
公共ArrayList getCandidateList(){
//继续返回空列表
//系统输出打印(候选);
将此表格交回给候选人;
}
} 
在这行中:

ArrayList<Candidate> candidates = new ArrayList<Candidate>();
ArrayList候选者=新的ArrayList();
定义一个隐藏类成员的局部变量。放下那一行。

在这一行:

ArrayList<Candidate> candidates = new ArrayList<Candidate>();
ArrayList候选者=新的ArrayList();

定义一个隐藏类成员的局部变量。删除该行。

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


另外,将所有逻辑都放在构造函数中是一种不好的做法,您应该在构造函数中创建一个新的ArrayList变量,而应该创建一个
add候选函数()
方法
this.candidates=new ArrayList()

另外,将所有逻辑都放在构造函数中是一种不好的做法,应该改为使用
addCandidates()
方法

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