有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java方法在一个ActionEvent中被多次调用

我想用ActionEvent按钮编写一个基于琐事的游戏。我在if-else结构中组织了每个连接到JButton实例的特定事件,在每个结构中,都会调用一个方法。其中一种方法是增加一个变量,该变量包含正确答案(cor)和错误答案(inc)的数量:

public void compare(String sel , String ans)

{

  //if correct
  if(sel.compareToIgnoreCase(ans) == 0)

    {

        q.setText("Correct! 10 points added!");
        score += 10;
        cor++;

    }

    //if incorrect
    else

    {

        q.setText("Incorrect! The correct answer was: " + ans);
       inc++;

    }

}

这组代码将从以下位置运行:

public void actionPerformed(ActionEvent event)

{

  if(e.equals("GUESS"))

  {

     userGuess = entry.getText();
     answer = ans.get(currentQuestionIndex);
     base.remove(entry);
     base.remove(submit);
     submit.setText("OK");
     submit.setActionCommand("OK");
     submit.addActionListener(this);
     base.add(submit);
     compare(userGuess, answer);

  } 

}

然而,每当调用compare方法时,inc和cor值似乎都会增加一个不明确的值。例如,如果我正确回答了一个问题,cor的新值将是2而不是1。当我回答另一个正确答案时,cor将是5而不是2。我尝试在代码中使用跟踪器,但到目前为止,我发现程序检测到运行compare()的actionEvent被多次按下,因此,它多次运行上述代码。如何修复代码,使这些变量正确地递增1


共 (0) 个答案