Java 如何将元素添加到方法外部对象的ArrayList中

Java 如何将元素添加到方法外部对象的ArrayList中,java,arraylist,Java,Arraylist,我想做一个选择题测验。QuizQuestion类处理问题对象,并保存用于在用户每次按下“下一个问题”按钮时在GUI类中设置问题标签上的文本和答案按钮的方法 我的问题是,在显示ArrayList中的最后一个问题对象后,它会再次以第一个元素开始,而不是完成测验。我知道原因是getCurrentQuestion()方法,在该方法中,我将问题对象添加到ArrayList中,因此每次调用该方法时,相同的元素都会再次添加到ArrayList中 我如何解决这个问题,并且仍然通过getCurrentQuesti

我想做一个选择题测验。QuizQuestion类处理问题对象,并保存用于在用户每次按下“下一个问题”按钮时在GUI类中设置问题标签上的文本和答案按钮的方法

我的问题是,在显示ArrayList中的最后一个问题对象后,它会再次以第一个元素开始,而不是完成测验。我知道原因是getCurrentQuestion()方法,在该方法中,我将问题对象添加到ArrayList中,因此每次调用该方法时,相同的元素都会再次添加到ArrayList中

我如何解决这个问题,并且仍然通过getCurrentQuestion()和getCurrentAnswers()方法中的ArrayList索引访问每个问题变量? 有没有办法将my Question对象添加到方法之外的ArrayList中?任何帮助都将不胜感激

这是我试图做的一个例子:

提问类:

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;
}



}
我的问题是,在ArrayList中的最后一个问题对象之后 显示它再次从第一个元素开始,而不是结束 测验。我知道原因是getCurrentQuestion() 方法,将问题对象添加到ArrayList中

这几乎没有道理。返回的问题始终位于
currentQuestionIndex
位置。但是,在您发布的代码中,它从不递增,因此应始终为0。好像你忘了发布你的问题的一些重要部分

不过,如果您的目标是简单地按添加顺序顺序检索它们,则可以通过使用and简单调用来摆脱
currentQuestionIndex
,该调用将检索并删除列表中的第一个元素,因此每次调用都将返回下一个元素

然后,您可以取消此方法:

public String getCurrentQuestion() {
    String question;
    questionBank.add(question1);
    questionBank.add(question2);
    questionBank.add(question3);
    question = questionBank.get(currentQuestionIndex).getQuestion();

    return question;
}
将其更改为更有意义的内容(仅在构造函数中调用一次):


只需使用
questionBank.poll()
检索下一个问题。当列表为空时,对
poll
的调用将返回
null
,以便您在列表末尾时可以轻松处理。

请编辑您的问题,您不希望我们阅读所有内容,是吗?如果您想在方法之外添加到arraylist,您可以将其公开给类,也可以只制作一个将添加到列表中的方法谢谢您的回答!我确实在GUI类中有一个方法,每次用户单击“下一步”按钮时都会调用该方法,因为我的帖子太长了,所以我删除了该按钮。该方法递增currentQuestionIndex并调用getCurrentQuestion()方法来设置标签上的文本,并调用getCurrentAnswers()方法来在单选按钮上显示三个可能的答案。
public String getCurrentQuestion() {
    String question;
    questionBank.add(question1);
    questionBank.add(question2);
    questionBank.add(question3);
    question = questionBank.get(currentQuestionIndex).getQuestion();

    return question;
}
public void addQuestions() {
    questionBank.add(question1);
    questionBank.add(question2);
    questionBank.add(question3);
}