在while循环中放入什么条件?

时间:2015-01-24 19:09:03

标签: java random methods while-loop numbers

我正在编写一个方法,在新行上多次打印guesses = [random number here from 1-50 inclusive],直到该值大于48.一旦大于48,我会尝试打印它所采用的猜测次数(尽管不使用扫描仪) ,'猜测'是Math.random产生的数字)。 以下是示例输出:

guess = 43
guess = 47
guess = 45
guess = 27
guess = 49
total guesses = 5

这是我的输出:

guess = 44
guess = 47
guess = 45
guess = 27
total guesses = 4

我得到几乎相同的随机数的原因是因为它在实践中。

这是我的代码:

public static void makeGuesses(){
    int totalGuesses = 0;
    double randomNumber = (Math.random() * 50 + 1);

    while(randomNumber < 48){
        System.out.print("guess = ");
        System.out.println(randomNumber + 1); 
        randomNumber = (int)(Math.random() * 51);
        totalGuesses++;
    }
        System.out.print("total guesses = " + totalGuesses);   
}

目前,我没有获得所需输出的最后一行。在while循环中我需要做什么?

4 个答案:

答案 0 :(得分:1)

您需要转换为int,因为您需要在生成数字时转换为int。

此外,如果您使用当前的实现,则会生成0-50(含)的数字。您想要生成1-50,包括。你可以通过乘以50来解决这个问题,然后简单地加1。

int randomNumber = (int) (Math.random() * 50 + 1);

答案 1 :(得分:0)

您的第一个random不是int,因为您忘记了演员

double randomNumber = (int) (Math.random() * 51);

我建议您将类型设为int

int randomNumber = (int) (Math.random() * 51);

答案 2 :(得分:0)

如果您需要反复生成随机数,则应使用java.util.Random

    public static void makeGuesses() {
        int totalGuesses = 0;
        Random rdm = new Random();
        int randomNumber;
        do {
            randomNumber = rdm.nextInt(50) + 1;
            System.out.println("guess = " + randomNumber);
            totalGuesses++;
        } while (randomNumber < 48);
        System.out.println("total guesses = " + totalGuesses);
    }
}

输出

guess = 15
guess = 29
guess = 26
guess = 14
guess = 3
guess = 1
guess = 49
total guesses = 7

答案 3 :(得分:0)

问题在于你的状态检查你尚未打印的数字。如果您使用调试器并逐步执行代码,您会注意到这一点。

int totalGuesses = 0;
int randomNumber;

while (true) {
  randomNumber = 1 + (int)Math.floor(Math.random() * 50);
  totalGuesses += 1;
  System.out.print("guess = ");
  System.out.println(randomNumber);
  if (randomNumber > 48) break;
}

System.out.print("total guesses = " + totalGuesses);

抱歉,我无法在手机上很好地格式化代码。