gpt4 book ai didi

java - 正确回答后显示下一个测验字符串

转载 作者:行者123 更新时间:2023-11-30 03:07:34 25 4
gpt4 key购买 nike

我正在创建一个 child 棋盘游戏,它会询问随机的数学问题,如果回答正确,玩家就会移动。我有一个主要的 BoardGUI 类,其中包括 2 个面板。一份用于董事会,一份用于提问。

我在使用问题面板时遇到问题。我正在从文本文件中读取问题并将每个问题保存为数组中的对象。问题是我可以正确回答一个问题,它会用一个新问题刷新问题,但不会继续这样做。

我将粘贴 QuestionGUI 类,因为我认为这是一个与从随机数生成相同问题/答案有关的问题。

 public class QuestionGUI extends JPanel implements ActionListener {

JLabel question;
JButton btnAnswers[];
Reader r1 = new Reader();
Questions q1 = new Questions();
Random rand = new Random();
boolean answered;

int random = rand.nextInt(r1.ArraySize());
int random2 = rand.nextInt(r1.ArraySize());
int length = q1.getArrayItem(random).getAnswers().length;


public QuestionGUI() {
questionInit(random);
}

public void questionInit(int randomNum) {
this.random = randomNum;
//gets the answers from the array obj
String[] answers = q1.getArrayItem(random).getAnswers();
//sets the question from question of array obj (same obj as answers I assumed, using random num)
question = new JLabel("<html>" + (q1.getArrayItem(random).getQuestion()) + "</html>", SwingConstants.CENTER);
question.setPreferredSize(new Dimension(280, 100));
add(question);
btnAnswers = new JButton[length];
for (int i = 0; i < length; i++) {
btnAnswers[i] = new JButton(answers[i]);
btnAnswers[i].setPreferredSize(new Dimension(280, 60));
btnAnswers[i].addActionListener(this);
add(btnAnswers[i]);
}
}

@Override
public void actionPerformed(ActionEvent e) {
//sets the correct answers to question also using the random num
String[] correctAnswers = q1.getArrayItem(random).getCorrectAnswers();
for (int i = 0; i < length; i++) {
if (e.getSource().equals(btnAnswers[i])) {
String tmp1 = btnAnswers[i].getText();
if (Arrays.asList(correctAnswers).contains(tmp1)) {
System.out.println("Correct");
removeAll();
revalidate();
answered = true;
questionInit(random2);
repaint();

} else {
answered = false;
}
}
}
}

public boolean getAnswered() {
return answered;
}
}

最佳答案

看起来您只生成一次用作索引的随机数。

int random2 = rand.nextInt(r1.ArraySize());
.
.
.
questionInit(random2);

每次都需要重新生成一个随机数。您可以编写一个辅助方法来执行此操作,或者只是将代码放在参数中:

questionInit(rand.nextInt(r1.ArraySize()));

这可能需要额外的重构。

关于java - 正确回答后显示下一个测验字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34360041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com