我正在编写一个方法,在新行上多次打印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循环中我需要做什么?
答案 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);
抱歉,我无法在手机上很好地格式化代码。