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

vsikbqxv  于 5个月前  发布在  Java
关注(0)|答案(1)|浏览(51)

虽然我对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.

acruukt9

acruukt91#

要在java中使用Random类获取随机数,需要调用rand.nextInt()方法。
当它打印“java.util.Random@682a0b20“时,它会显示您创建的Random对象的hashcode,这正是计算机区分每个示例的方式。它只显示hashcode,因为没有特定于Random类的toString()方法在打印时将其表示为字符串。相反,它会打印从Object类继承的toString()值。
你可能想看看Random class的java文档。
感谢@tgdavies,纠正了我关于内存位置/哈希码的陈述。

相关问题