虽然我对Java不太熟悉,但我用Java编程的时间足够长,知道这不是正常的行为。基本上,程序可以正常打印文本,但'兰德'变量打印的是数字、字符和字母的集合,如下所示。
我尝试将'兰德'变量初始化为nextInt()方法,以为我会通过种子产生随机结果,但很快就明白这只会生成一个范围内的数字,而不是种子内的数字。
对于上下文,我创建了一个while循环,它根据用户提供的种子不断迭代一个随机数,直到用户键入单词“stop "结束循环。
我该怎么解决这个问题?
代码如下:
public static void WhileLoop(Scanner sc) {
System.out.println("\nWHILE LOOP");
System.out.println("Please enter a seed for the random number generator: ");
int seed = sc.nextInt();
Random rand = new Random(seed);
int loopCounter = 0;
String stop = "stop";
String yes = "yes";
while (loopCounter >= 0) {
System.out.println("\nHere's your random number: " + rand);
System.out.println("Would you like another number? Enter 'stop' to stop.");
String answer = sc.next();
loopCounter++;
if(answer.equals(yes)) {
continue;
}
if(answer.equals(stop)) {
break;
}
}
字符串
这就是我一直困扰的结果。
Here's your random number: java.util.Random@682a0b20
Would you like another number? Enter 'stop' to stop.
型
1条答案
按热度按时间acruukt91#
要在java中使用Random类获取随机数,需要调用
rand.nextInt()
方法。当它打印“
java.util.Random@682a0b20
“时,它会显示您创建的Random对象的hashcode,这正是计算机区分每个示例的方式。它只显示hashcode,因为没有特定于Random类的toString()
方法在打印时将其表示为字符串。相反,它会打印从Object类继承的toString()
值。你可能想看看Random class的java文档。
感谢@tgdavies,纠正了我关于内存位置/哈希码的陈述。