0

ランダムプロセス( 2+2 、 14/2 など)のプログラムを作成します。

GUIを作ってみました。5 つのボタンがあります (Add の場合は Add、分割の場合は Div など)。ユーザーが [追加] ボタンをクリックすると、JTextArea にメッセージを送信してメッセージを追加します。

2 + 4 =

(または他の乱数)

ユーザーが回答を書き込むことができる JTextField があります。したがって、彼が 6 を書き込むと、JText 領域に成功メッセージが表示され (間違った答えを入力しても失敗メッセージが表示されます)、他の 2 つの乱数も表示されます。

2+4 = 6

はい!

3+4 =

c.isOverLimit() メソッドが true を返すまで継続します (10 プロセス後)。

int x = 10;

do {
    String string = String.format("%d %s %d =", p.getNumber1(),
                                  p.getOperator(), p.getNumber2());
    writeMessage(string);
    textField.addActionListener(
    new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {
                p.checkAnswer(Double.parseDouble(e.getActionCommand()));
                writeMessage(p.getMessage(Double.parseDouble(
                                              e.getActionCommand())));
                textField.setText("");
            }
            catch(Exception ex) {
                System.out.println(ex.getMessage());
            }
        }
    }
    );
    c = Proccess.getCounter();
    x--;
}
while (x != 0);

私の問題は、追加ボタンを押すと、次の出力が得られることです。

4+3=

4+3=

4+3=

4+3=

4+3=

4+3=

4+3=

4+3=

4+3=

4+3=

間違っているのは、do...while が 10 回実行され、ユーザーの回答のために停止しないことです。私が使用する方法に注意を払わないでください。私のプログラムはコンソールプログラムで正しく実行されるので、私のせいはその間にあります... do

私の英語でごめんなさい。ありがとうございました!

4

1 に答える 1

0

呼び出し回数のカウントは、actionPerformedメソッドで行う必要があります。do...whileループを削除し、代わりにこれを使用します。

int x = 10;
textField.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
        if (x >= 0) {
            try {
                p.checkAnswer(Double.parseDouble(e.getActionCommand()));
                writeMessage(p.getMessage(Double.parseDouble(e.getActionCommand())));
                textField.setText("");
            } catch(Exception ex){
                System.out.println(ex.getMessage());
            }
            x--;
        } else {
            // quit, or whatever you want to do
        }
    }
});
于 2013-03-25T16:00:39.413 に答える