java - 如何防止连续两次询问相同的乘法数字

标签 java random

很抱歉再次打扰您,但我还有一个要添加到此程序的内容。它工作得很好,但是如何才能使它不会连续两次问相同的乘法问题呢?例如,当它询问 1*2 是多少时,它不应该立即再次询问(尽管可能性很小)。

import java.util.Random;
import javax.swing.JOptionPane;

public class Main{

  public static void main(String[] args) {

  boolean correctAnswer;
  Random number = new Random();
  int nmb1;
  int nmb2;
  int multi;


  while (true) {
    nmb1 = number.nextInt(10) + 1;
    nmb2 = number.nextInt(10) + 1;
    multi = nmb1 * nmb2;

    // read the user's input ...
    do {
        correctAnswer = multiplication(nmb1,nmb2,multi);
    }
    while (correctAnswer != true);
    // .. and repeat until the user types the correct answer

    JOptionPane.showMessageDialog(null, "Right");
  }
   }


  public static boolean multiplication(int number1,int number2,int answer)
  {

  int question;

     question = Integer.parseInt(JOptionPane.showInputDialog("How much is" + number1 + "*" + number2));

      if (question != answer) {
          JOptionPane.showMessageDialog(null, "Wrong, try again");

          return false;
      }

  return true;

  }

}

最佳答案

有很多方法可以做到这一点,在这个例子中,它计算数字对的所有组合,然后对数字对进行混洗,最后询问每个数字对。

public class Main{

    public static void main(String[] args) {

        boolean correctAnswer;
        int nmb1;
        int nmb2;
        int multi;

        // It computes all combinations
        List<int[]> asks = new ArrayList<>(100);
        for (int i = 1; i < 11; i++) {
            for (int j = 1; j < 11; j++) {
                asks.add(new int[]{i,j});
            }
        }

        // It shufles
        Collections.shuffle(asks);

        // It asks for every number pair
        for (int[] numbers : asks){ // instead of while(true)
            nmb1 = numbers[0];
            nmb2 = numbers[1];
            multi = nmb1 * nmb2;

            // read the user's input ...

            ...
        }

关于java - 如何防止连续两次询问相同的乘法数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47652271/

相关文章:

python - 验证均匀分布的 3D 坐标的分布

r - 在 R 中拟合多峰分布;从拟合分布生成新值

javascript - 你能让一个非密码安全的随机数生成器安全吗?

java - AsyncTask 中通过代码旋转屏幕崩溃

java - 如何使用 Java 反射调用父类(super class)方法

java - Synthetica Swing 它们无法正确加载

python - 使用 python 中的特定规则集生成电话号码

Java、JVM 和操作系统以及交换

java - 如何在 Windows 的 shell 脚本中配置 JAVA_HOME

javascript - WAMP 上的 PHP 更喜欢相同的随机数组元素?