簡體   English   中英

如何為兒童數學測驗計划提出 10 個隨機數學問題?

[英]How to ask 10 random math questions for a math quiz program for kids?

我正在嘗試為一個提出 10 個問題的學校項目為孩子們創建一個數學程序。 我無法找出在我的代碼中應用循環的方式和位置。 我試圖在我的 enterbtnListener 和 startBtnListener 中使用 for 循環,但不幸的是沒有一個工作。 這是程序的output。 program_OUTPUT

這是 startBtnListener 的代碼

class startBtnListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        if (add.isSelected()) {
            ansBtn.setEnabled(true);
            input.setEditable(true);
            result = num1 + num2;
            question = ("What is " + num1 + " + " + num2 + " = ");

            questionTOP.setVisible(false);
            questionHERE.setText(question);
            questionHERE.setVisible(true);
            input.setVisible(true);

            add.setEnabled(false); //disables buttons until END button is clicked
            subtract.setEnabled(false);
            multiply.setEnabled(false);
            beginner.setEnabled(false);
            intermediate.setEnabled(false);
            advanced.setEnabled(false);


        } else if (subtract.isSelected()) {
            ansBtn.setEnabled(true);
            input.setEditable(true);
            result = num1 - num2;
            question = ("What is " + num1 + " - " + num2 + " = ");

            questionTOP.setVisible(false);
            questionHERE.setText(question);
            questionHERE.setVisible(true);
            input.setVisible(true);

            add.setEnabled(false); //disables buttons until END button is clicked
            subtract.setEnabled(false);
            multiply.setEnabled(false);
            beginner.setEnabled(false);
            intermediate.setEnabled(false);
            advanced.setEnabled(false);

        } else if (multiply.isSelected()) {
            ansBtn.setEnabled(true);
            input.setEditable(true);
            result = num1 * num2;
            question = ("What is " + num1 + " * " + num2 + " = ");

            questionTOP.setVisible(false);
            questionHERE.setText(question);
            questionHERE.setVisible(true);
            input.setVisible(true);

            add.setEnabled(false); //disables buttons until END button is clicked
            subtract.setEnabled(false);
            multiply.setEnabled(false);
            beginner.setEnabled(false);
            intermediate.setEnabled(false);
            advanced.setEnabled(false);

        } else {
            ansBtn.setEnabled(false);
            input.setEditable(false);
            JOptionPane.showMessageDialog(null, "You need to choose below!", "PLEASE NOTE", JOptionPane.WARNING_MESSAGE);
        }

    }
}

這是 enterBtnListener 的代碼

class enterListener implements KeyListener {
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_ENTER) {
            if (beginner.isSelected()) {
                num1 = (int) (Math.random() * 11);
                num2 = (int) (Math.random() * 11);
            } else if (intermediate.isSelected()) {
                num1 = (int) (Math.random() * 9 + 11);
                num2 = (int) (Math.random() * 9 + 11);
            } else if (advanced.isSelected()) {
                num1 = (int) (Math.random() * 17 + 13);
                num2 = (int) (Math.random() * 17 + 13);
            }

            // checking answer is correct or wrong
            while (true) {
                double doubleOfInput = Double.parseDouble(input.getText()); // getting string to double
                if (doubleOfInput == result) {
                    JOptionPane.showMessageDialog(null, "correct");
                    input.setText(" "); // clearing input after user entered answer
                    break;
                } else {
                    JOptionPane.showMessageDialog(null, "Wrong, Try Again!");
                    input.setText(" ");
                }
            }

            //generating formula
            if (add.isSelected()) {
                result = num1 + num2;
                question = ("What is " + num1 + " + " + num2 + " = ");
            } else if (subtract.isSelected()) {
                result = num1 - num2;
                question = ("What is " + num1 + " - " + num2 + " = ");
            } else if (multiply.isSelected()) {
                result = num1 * num2;
                question = ("What is " + num1 + " * " + num2 + " = ");
            } else {
                result = num1 + num2;
                question = ("What is " + num1 + " + " + num2 + " = ");
            }

            questionHERE.setText(question);//setting new question
        }

    }

如果有人可以幫助我,我將不勝感激。 謝謝。

看起來不錯! 我的意見是有一個設計

  1. start button -> 偵聽器將啟動此數學測驗。

  2. next button - > 偵聽器將有一個迭代 class (實例級別)變量,你可以擁有它,直到它達到你想要的計數(10 說)

  3. End button -> 監聽器將終止此數學測驗,並且可能應該發布結果。 可能有此終止並在單獨的方法中顯示結果邏輯並在此處調用。 (方法名:terminateQuiz(說))

下一個按鈕的監聽器大致如下,

class nextBtnListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
       //count++;
       //when count reaches 10 (say) it should call terminateQuiz
    }
}

其他一切看起來都很好。。

注意: Next 按鈕的原因提供了比 Enter 鍵更好的外觀和感覺。

//快樂學習!

我假設您的enterListener class 是一個正在處理 gui 的ANSWER按鈕,流程如下所示:

StartButton - 將初始化測驗並顯示初始問題 Answer Button - 將接受用戶輸入的答案並顯示下一個按鈕。

所以你的循環可能 go 就像下面的enterListener

class enterListener implements KeyListener {
public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
        if (beginner.isSelected()) {
            num1 = (int) (Math.random() * 11);
            num2 = (int) (Math.random() * 11);
        } else if (intermediate.isSelected()) {
            num1 = (int) (Math.random() * 9 + 11);
            num2 = (int) (Math.random() * 9 + 11);
        } else if (advanced.isSelected()) {
            num1 = (int) (Math.random() * 17 + 13);
            num2 = (int) (Math.random() * 17 + 13);
        }
        for(int i = 1 ; i < 10 ;i++){ //start your loop with 1 till 9 showing 9 questions as first one is already start with startbutton
            // checking answer is correct or wrong
            while (true) {
                double doubleOfInput = Double.parseDouble(input.getText()); // getting string to double
                if (doubleOfInput == result) {
                    JOptionPane.showMessageDialog(null, "correct");
                    input.setText(" "); // clearing input after user entered answer
                    break;
                } else {
                    JOptionPane.showMessageDialog(null, "Wrong, Try Again!");
                    input.setText(" ");
                }
            }

            //generating formula
            if (add.isSelected()) {
                result = num1 + num2;
                question = ("What is " + num1 + " + " + num2 + " = ");
            } else if (subtract.isSelected()) {
                result = num1 - num2;
                question = ("What is " + num1 + " - " + num2 + " = ");
            } else if (multiply.isSelected()) {
                result = num1 * num2;
                question = ("What is " + num1 + " * " + num2 + " = ");
            } else {
                result = num1 + num2;
                question = ("What is " + num1 + " + " + num2 + " = ");
            }

            questionHERE.setText(question);//setting new question
        }
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM