首页 > 解决方案 > 如何为儿童数学测验计划提出 10 个随机数学问题?

问题描述

我正在尝试为一个提出 10 个问题的学校项目为孩子们创建一个数学程序。我无法找出在我的代码中应用循环的方式和位置。我试图在我的 enterbtnListener 和 startBtnListener 中使用 for 循环,但不幸的是没有一个工作。这是程序的输出。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
        }

    }

如果有人可以帮助我,我将不胜感激。谢谢。

标签: javaloopsfor-loop

解决方案


看起来不错!我的意见是有一个设计

  1. 一个start button-> 听众将发起这个数学测验。

  2. A next button-> 监听器将有一个迭代类(实例级别)变量,你可以拥有它直到它达到你想要的计数(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 键更好的外观和感觉。

//快乐学习!


推荐阅读