我正在测验。我将问题存储在数组中。因此,我使用一个while循环来逐个显示问题。当我单击按钮时,计数器+1并转到下一个迭代,即下一个问题。但是,似乎无法解决问题。
final int[] k = {0};
while (k[0] <2){
ql.setText(qa[k[0]][0]);
ql.setVisible(true);
for (int l = 0; l < 4; l++) {
ch[l].setVisible(true);
ch[l].setText(String.valueOf((int) (50 * Math.random())));
}
rc = (int) (4 * Math.random());
ch[rc].setText(qa[k[0]][1]);
nx.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
k[0]++;
}
});
}
这里有什么问题?谢谢!!
您必须反转循环才能以事件驱动的方式工作。所以我在想的是,您应该让按钮单击驱动“循环”,因为它只会激活您的计数器没有耗尽的问题,否则只会忽略更多的按下。
就像是:
private void showQuestion(int question) {
ql.setText(qa[question][0]);
ql.setVisible(true);
for (int l = 0; l < 4; l++) {
ch[l].setVisible(true);
ch[l].setText(String.valueOf((int) (50 * Math.random())));
}
int rc = (int) (4 * Math.random());
ch[rc].setText(qa[question][1]);
}
...
// In some method...
nx.addActionListener(new ActionListener() {
int nextQuestion = 1;
@Override
public void actionPerformed(ActionEvent e) {
if (k < 1) {
showQuestion(nextQuestion++);
}
}
});
showQuestion(0); // Shows the first question
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句