ArrayList 访问器方法 returns 没有值
ArrayList accessor method returns no values
这是我自己制作的第一个程序class。它旨在执行单一可转让选举;现在我需要获取 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;
}
}
public ArrayList<Candidate> candidates = new ArrayList<Candidate>();
Election(int numVotes)
{
String name;
ArrayList<Candidate> candidates = new ArrayList<Candidate>();
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
您正在创建一个 不同的 arraylist 和 "shadowing" candidates
成员变量。应该是
this.candidates = new ArrayList<Candidate>();
这一行:
ArrayList<Candidate> candidates = new ArrayList<Candidate>();
您定义了一个隐藏 class 成员的局部变量。删除该行。
您正在构造函数中创建一个新的 ArrayList 变量,您应该这样做
this.candidates = new ArrayList<Candidate>();
此外,将所有逻辑都放在构造函数中是不好的做法,您应该创建一个 addCandidates()
方法
这是我自己制作的第一个程序class。它旨在执行单一可转让选举;现在我需要获取 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;
}
}
public ArrayList<Candidate> candidates = new ArrayList<Candidate>();
Election(int numVotes)
{
String name;
ArrayList<Candidate> candidates = new ArrayList<Candidate>();
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
您正在创建一个 不同的 arraylist 和 "shadowing" candidates
成员变量。应该是
this.candidates = new ArrayList<Candidate>();
这一行:
ArrayList<Candidate> candidates = new ArrayList<Candidate>();
您定义了一个隐藏 class 成员的局部变量。删除该行。
您正在构造函数中创建一个新的 ArrayList 变量,您应该这样做
this.candidates = new ArrayList<Candidate>();
此外,将所有逻辑都放在构造函数中是不好的做法,您应该创建一个 addCandidates()
方法