Метод доступа ArrayList не возвращает значений
Это моя первая программа, которую я делаю из своего класса. Он предназначен для проведения однопереносных выборов; сейчас мне нужно получить 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;
}
}
3 ответа
Вы создаете новую переменную 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>();
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Вы создаете другого arraylist и "слежка" за candidates
переменная-член. Так должно быть
this.candidates = new ArrayList<Candidate>();
В этой строке:
ArrayList<Candidate> candidates = new ArrayList<Candidate>();
Вы определяете локальную переменную, которая скрывает члена класса. Брось эту строку.