Java 为什么这个循环不能正常运行

Java 为什么这个循环不能正常运行,java,loops,Java,Loops,假设我要编写一个java程序,在这个程序中,我询问用户他们想要回答多少个数学问题,并根据他们的答案使用任意选择循环生成随机问题,并记录他们回答正确的数量。我用它来生成随机数学问题,但它只做了一次,似乎跳过了循环。有人能帮忙吗 import javax.swing.JOptionPane; import java.util.Random; import java.util.Scanner; /** * * @author user */ public class MathQuiz {

假设我要编写一个java程序,在这个程序中,我询问用户他们想要回答多少个数学问题,并根据他们的答案使用任意选择循环生成随机问题,并记录他们回答正确的数量。我用它来生成随机数学问题,但它只做了一次,似乎跳过了循环。有人能帮忙吗

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

/**
 *
 * @author user
 */
public class MathQuiz {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Random obj = new Random();
        int num1 = obj.nextInt(10);
        int num2 = obj.nextInt(10);
        int rand = num1 + num2;
        String response = JOptionPane.showInputDialog(null,"How many problems would you like to solve?");
        int ans = Integer.parseInt(response); // answer from question
        String result= null;
        int times = input.nextInt();
        int counter = 0; //counts total math problems

        while (counter != ans){
            counter++;
            JOptionPane.showInputDialog(num1 + "+" +num2);
            if (ans == rand){
                result= "Correct";
            }else {
                result= "Incorrect";
            }
        }   JOptionPane.showMessageDialog(null, );

        }
}  

以下是代码中的问题: 计算值后,您不会显示结果。 不是每次都生成随机数

    public class MathQuiz {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String response = JOptionPane.showInputDialog(null,"How many problems would you like to solve?");
        int noOfTimes = Integer.parseInt(response); // answer from question
        String result= null;

        for (int counter = 0; counter < noOfTimes; counter++) {
            Random obj = new Random();
            int num1 = obj.nextInt(10);
            int num2 = obj.nextInt(10);
            int rand = num1 + num2;

            int answer = Integer.parseInt(JOptionPane.showInputDialog(num1 + "+" +num2));
            if (answer == rand){
                result= "Correct";
            }else {
                result= "Incorrect";
            }

            JOptionPane.showMessageDialog(null, result);
        }
    }
}
公共类数学测验{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
String response=JOptionPane.showInputDialog(null,“您希望解决多少问题?”);
int noOfTimes=Integer.parseInt(response);//回答问题
字符串结果=null;
用于(int计数器=0;计数器<中午;计数器++){
Random obj=新的Random();
int num1=obj.nextInt(10);
int num2=obj.nextInt(10);
int rand=num1+num2;
int answer=Integer.parseInt(JOptionPane.showInputDialog(num1+“+”+num2));
如果(答案=rand){
结果=“正确”;
}否则{
结果=“不正确”;
}
showMessageDialog(空,结果);
}
}
}

循环内部的数字不应存储在与while(…)条件中使用的变量相同的变量中。在本例中,您使用了ans。在下面的示例中,我为数学答案和循环中的迭代次数提供了单独的变量。您遇到的另一个问题是没有将结果消息传递给showMessageDialog(..)方法


代码至少有一个语法错误。试着简单地复制并粘贴源文件中的问题(格式正确)。代码将终端输入(来自
System.in
)与GUI输入(
showInputDialog
)混合。这行不通。您似乎在为两种不同的东西使用
ans
,并且对这两种用法感到困惑。另外,当你问这个问题时,你没有把用户的答案分配给任何变量。您需要这样做,以便检查答案。
import javax.swing.JOptionPane;
import java.util.Random;
import java.util.Scanner;

public class MathQuiz {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Random obj = new Random();
        String timesString = JOptionPane.showInputDialog(null,"How many problems would you like to solve?");
        int timesInt = Integer.parseInt(timesString); // answer from question
        int counter = 0; //counts total math problems

        while (counter != timesInt) {
            counter++;

            int num1 = obj.nextInt(10);
            int num2 = obj.nextInt(10);
            int rand = num1 + num2;

            String answerString = JOptionPane.showInputDialog(num1 + "+" +num2);
            int answerInt = Integer.parseInt(answerString);

            JOptionPane.showMessageDialog(null, answerInt == rand ? "Correct" : "Incorrect");
        }
    }
}