Java 生成随机数,但有几个小错误
我确实看过与随机数相关的线程,并将它们应用到本作业中,但我有两个问题 1) 我需要我的程序生成随机数(并打印它们)并计算迭代次数。我已经开始倒计时了,但是我不知道为什么随机数没有打印出来。这与我的猜测=0有关吗?如果我不清楚,这里有一个例子Java 生成随机数,但有几个小错误,java,Java,我确实看过与随机数相关的线程,并将它们应用到本作业中,但我有两个问题 1) 我需要我的程序生成随机数(并打印它们)并计算迭代次数。我已经开始倒计时了,但是我不知道为什么随机数没有打印出来。这与我的猜测=0有关吗?如果我不清楚,这里有一个例子 Example: Enter a number: 13 85 89 73 94 13 This took 5 tries 2) 我不知道为什么我的程序总是以一个数字作为答案。输入数字86后,程序立即结束 import java.util.*; pub
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();
}
}
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();
}
}
请参见您只调用了
随机对象上的nextInt()
一次,因此您只生成了一个随机数。在循环内部,您在扫描仪上调用nextInt()
,扫描仪正在读取System.in,因此您的程序正在停止,等待用户每次在循环中再次输入一个数字
如果希望用户只输入一个数字一次,然后随机生成一个数字,直到匹配为止,则需要交换在循环中调用的数字。要打印生成的随机数,需要在打印当前数字的循环中添加一条打印语句
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++;
}
每次都会打印出来,每次都会猜出一个新的随机数 因为你用(1)为你的随机数播种,你总是得到相同的数字序列。你需要打印出数字才能打印出来。ie System.out.println(“随机数为:“+num”);您的描述令人困惑,是程序猜到了用户输入的数字,还是用户猜到了程序生成的数字?@matt即使我打印它们,结果也是一样的。如果用户猜到了数字,您的程序就无法正常工作。它总是在86处“停止”的原因是86是生成的数字。你猜到数字了-节目结束了。为什么它总是生成这个数字在其他注释和answers@MiloBem哦,糟糕。用户应该猜测程序生成的数字,然后打印出一组随机数,直到得到结果。问题是这是一个学校作业,我没有发言权,因为教授希望它的种子值为1。不管怎样,谢谢。种子实际上是一种每次都能得到相同数字序列的方法(一种随机的初始设置),所以这不是一个问题,而是一种设计。