GUI中的Java循环会重复,而不是计算迭代次数

GUI中的Java循环会重复,而不是计算迭代次数,java,swing,Java,Swing,我正在做一个Java测试,它解释用户输入的关于数组一维的数据(问题),并对照第二维验证数据(正确答案)。在CLI中创建它之后,我添加了jFrame功能,留下它的目的是检查它通过IDE控制台输出(System.out.println)的工作方式,并在以后添加jFrame输出。但是,设计用于答案检查的循环无法按预期运行 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

我正在做一个Java测试,它解释用户输入的关于数组一维的数据(问题),并对照第二维验证数据(正确答案)。在CLI中创建它之后,我添加了jFrame功能,留下它的目的是检查它通过IDE控制台输出(System.out.println)的工作方式,并在以后添加jFrame输出。但是,设计用于答案检查的循环无法按预期运行

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    Console input = System.console();
    Random r = new Random();
    int randq = r.nextInt(4);
    String answer;
    String[][] Qs = new String[4][2];

    Qs[0][0] = "A?";
    Qs[0][1] = "A";
    Qs[1][0] = "B?";
    Qs[1][1] = "B";
    Qs[2][0] = "C?";
    Qs[2][1] = "C";
    Qs[3][0] = "D?";
    Qs[3][1] = "D";

    for (int counter = 0; counter < 4;) {
        randq = r.nextInt(4);
        jLabel1.setText(Qs[randq][0]);
        add(jTextField1);
        answer = jTextField1.getText();
            if (answer.equals(Qs[randq][1])) {
                System.out.println("Correct!");
                jTextField1.setText("");
            }
            else {
                System.out.println("Incorrect, the answer was " + Qs[randq][1]);
                jTextField1.setText("");
            }
            counter = counter + 1;
    }
}  
这个程序的目的是重复问题的数量,但是每次它得到一个问题时,它会重复自己的次数乘以问题的数量。此外,出于某种原因,它不会解释第一个答案之后的任何答案,正如您可以看到的“不正确,答案是A”


我无法通过逐行阅读来判断出问题所在。提前谢谢。

一旦找到正确答案,你需要
中断你的循环

if (answer.equals(Qs[randq][1])) {
    System.out.println("Correct!");
    jTextField1.setText("");
    break;
}

这条线也很奇怪

counter = counter + 1;
在循环的末尾

不确定您是否编写了这一行,但您可以通过如下方式进行循环来删除这一行

for(int counter = 0; counter < 4; counter++) {
    // Do work
}
for(int计数器=0;计数器<4;计数器++){
//工作
}

set
break
statement,因为您已经找到了正确的答案。请查看该网站的工作原理、主题中的问题以及相应的问题。另见:
for(int counter = 0; counter < 4; counter++) {
    // Do work
}