为什么Random方法在打印时会产生方法的名称? [Java]

问题描述 投票:0回答:1

虽然我对 Java 相对缺乏经验,但我已经使用 Java 编码了足够长的时间,知道这一点 这不是正常行为。基本上,程序打印文本很好,但“rand”变量打印数字、字符和字母的组合,如下所示。

我尝试将“rand”变量初始化为 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.
java random methods println
1个回答
-1
投票

要在java中使用Random类获取随机数,您需要调用

rand.nextInt()
方法。

当它打印“

java.util.Random@682a0b20
”时,它会显示您创建的随机对象的哈希码,这就是计算机区分每个实例的方式。它只显示哈希码,因为没有特定于 Random 类的
toString()
方法在打印时将其表示为字符串。相反,它打印从 Object 类继承的
toString()
值。

您可能想查看 Random 类的 java 文档。

感谢@tgdavies,纠正我关于内存位置/哈希码的陈述。

© www.soinside.com 2019 - 2024. All rights reserved.