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