0

所以,我必须制作一个程序来生成一个随机数,然后要求用户输入一个数字。如果用户输入了错误的号码,他/她将不得不重试。这是我的代码。

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) 

因为那会产生一个我不想要的新变量。我只想改变现有的。

4

2 回答 2

3

你必须把这两行放在你的循环中:

String input = JOptionPane.showInputDialog("What is your first guess?");
int number = Integer.parseInt(input);

否则,您将无限次地比较第一个猜测与随机数,而不要求用户输入第二个数字。

于 2013-08-31T16:59:46.707 回答
0

您没有更新用户猜测的数字,只是与相同的数字进行比较。你需要做:

int number = Integer.parseInt(answer);

在while循环中。

另外我认为这段代码有编译错误:它缺少关闭 } (可能在复制/粘贴中省略)并且未声明变量 answer。

编辑:对不起,我没有看到我之前的答案(我试图在我的 Eclipse 上重现代码),但无论如何该代码并没有错,但很奇怪,因为它总是要求用户进行第一次猜测:P

于 2013-08-31T17:48:04.740 回答