我确实查看了与随机相关的线程,并将其实现到此作业中,但是我有两个问题。
1)我需要我的程序来生成随机数(并打印它们)并计算迭代次数。我已经计算了迭代次数,但是我不知道为什么随机数没有打印出来。它与我的猜测= 0有关吗?如果我不清楚,这是一个例子。
Example:
Enter a number: 13
85
89
73
94
13
This took 5 tries
2)我不知道为什么我的程序总是以一个数字卡住答案。输入数字86后,程序立即结束。
import java.util.*;
public class FeelingLucky {
public static void main (String [] args) {
Scanner sc = new Scanner (System.in);
int tries = 0;
int guess = 0;
Random random = new Random(1);
int num = random.nextInt(100) + 1;
System.out.print("Pick a number between 1 and 100:");
while (guess != num) {
guess = sc.nextInt();
tries++;
}
System.out.println("It took " + tries + " tries to match");
sc.close();
}
}
答案 0 :(得分:3)
Random(1)
在构造函数中使用种子,该种子总是相同的。仅使用Random()
-无需参数构造函数。
import java.util.*;
public class FeelingLucky {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int tries = 0;
int guess = 0;
Random random = new Random(); // No seed
int num = random.nextInt(100) + 1;
System.out.print("Pick a number between 1 and 100:");
while (guess != num) {
guess = sc.nextInt();
tries++;
}
System.out.println("It took " + tries + " tries to match");
sc.close();
}
}
请参见Java random always returns the same number when I set the seed?
答案 1 :(得分:0)
您仅在nextInt()
对象上调用过Random
,所以只生成了一个随机数。在循环内部,您在扫描器上调用nextInt()
,该扫描器正在从System.in中读取数据,因此您的程序暂停并等待用户每次在循环中再次输入数字。
如果您希望用户一次输入一个数字,然后让用户随机输入以生成数字直到匹配,则需要在循环内交换哪个被称为。要打印正在生成的随机数,您需要在循环中添加一个打印语句,以打印该当前数。
答案 2 :(得分:0)
while (guess != num) {
num = random.nextInt(100) + 1;
guess = sc.nextInt();
System.out.printf("you guessed: %d the number was %d%n",guess, num);
tries++;
}
每次都会打印出一个,每次 都会猜测一个新的随机数。