while循环错误

时间:2013-08-31 16:56:08

标签: java while-loop

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

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) 

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

2 个答案:

答案 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