Я пытаюсь сделать программу викторины с несколькими вариантами. Класс QuizQuestion работает с объектами Вопроса и содержит методы для установки текста на метке вопроса и ответных кнопках в классе GUI каждый раз, когда пользователь нажимает кнопку «Следующий вопрос».Как добавить элементы в ArrayList объектов вне метода
Моя проблема в том, что после того, как последний объект Question в ArrayList отображается, он начинается с первого элемента снова, а не заканчивается викторину. Я понимаю, что причиной является метод getCurrentQuestion(), в котором я добавляю объекты Question в ArrayList, так что каждый раз, когда метод получает вызов, одни и те же элементы снова добавляются в ArrayList.
Как я могу решить эту проблему и по-прежнему получать доступ к каждой переменной Вопроса по индексу ArrayList в методах getCurrentQuestion() и getCurrentAnswers()? Есть ли способ добавить объекты Question в ArrayList за пределами метода? Любая помощь будет оценена по достоинству.
Это пример того, что я пытаюсь сделать:
Класс QuizQuestion:
import java.util.*;
public class QuizQuestion {
public int currentQuestionIndex = 0;
public String userAns;
public int correctAnswers;
public ArrayList<Question> questionBank = new ArrayList<Question>();
Question question1 = new Question("What is 4 + 8", Arrays.asList("11", "14", "12"), "12");
Question question2 = new Question("What is 24 - 7", Arrays.asList("17", "13", "16"), "17");
Question question3 = new Question("What is 7 * 9", Arrays.asList("72", "63", "56"), "63");
public String getCurrentQuestion() {
String question;
questionBank.add(question1);
questionBank.add(question2);
questionBank.add(question3);
question = questionBank.get(currentQuestionIndex).getQuestion();
return question;
}
public List<String> getCurrentAnswers() {
List <String> answrs;
answrs = questionBank.get(currentQuestionIndex).getAnswers();
return answrs;
}
}
Тогда в моем классе GUI у меня есть метод, который вызывается каждый раз, когда пользователь нажимает кнопку кнопка «Далее»:
QuizQuestion quiz = new QuizQuestion();
public void nextQuestion() {
quiz.currentQuestionIndex = quiz.currentQuestionIndex + 1;
label.setText(quiz.getCurrentQuestion());
setButtons(quiz.currentQuestionIndex); //sets the text for possible answers on Radiobuttons.
}
Пожалуйста, отредактируйте ваш вопрос, вы не ожидаете, что мы все это прочитаем или, не так ли? – QuakeCore
Если вы хотите добавить к arraylist вне метода, вы можете сделать его общедоступным для класса или просто сделать способ, который будет добавлен в список –