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>();