所以,我必须制作一个生成随机数的程序,然后要求用户输入一个数字。如果用户输入错误的号码,他/她将不得不再次尝试。这是我的代码。
import java.util.Random;
import javax.swing.JOptionPane;
public class Oblig4 {
public static void main (String[] args){
Random rg = new Random();
int randomNumber = rg.nextInt(100);
JOptionPane.showMessageDialog(null, "The program has generated a number,"
+ " You have to guess what number it is.");
String input = JOptionPane.showInputDialog("What is your first guess?");
int number = Integer.parseInt(input);
while (number != randomNumber ) {
JOptionPane.showMessageDialog(null, "You've guessed wrong");
String answer = JOptionPane.showInputDialog("Try again");
}
{JOptionPane.showMessageDialog(null,"Congratulations, you guessed right!");
}
我的问题是,在用户猜错之后,它只是循环并说我猜错了,即使我第二次输入正确答案。
假设随机数是4,如果我输入3则表示我错了并请我再试一次。如果我现在输入4,它仍然说我错了。
编辑:发现我的错误。我不得不写number = Integer.parseInt(answer)
在while循环中。不是
int number = Integer.parseIng(answer)
因为这会产生一个我不想要的新变量。我只是想改变现有的。
答案 0 :(得分:3)
你必须把这两行放在你的循环中:
String input = JOptionPane.showInputDialog("What is your first guess?");
int number = Integer.parseInt(input);
否则,您将第一次猜测的无限次与随机数进行比较,而不要求用户输入第二个数字。
答案 1 :(得分:0)
您没有更新用户猜测的数字,只是比较相同的数字。 你需要这样做:
int number = Integer.parseInt(answer);
在while循环中。
此外,我认为此代码存在编译错误:缺少关闭}(可能在复制/粘贴中无效)并且未声明变量答案。
编辑:对不起,我之前没有看到答案(我试图在我的日食上重现代码),但无论如何代码没有错,但很奇怪,因为它总是要求用户进行第一次猜测: p