【问题标题】:Picking random array element选择随机数组元素
【发布时间】:2026-01-12 06:45:02
【问题描述】:

我正在尝试从这个数组中获取一个随机值。当我运行程序时,它只为 x 打印 0。为什么不打印从函数返回的更新值?

import java.util.*;
public class randomArray
{
    public static void main(String[] args)
    {
        int[] myArray = new int[]{1,2,3};
        int x = 0;
        getRandom(myArray, x);
        System.out.println(x);
    }
    public static int getRandom(int[] array, int h) 
    {
        int rnd = new Random().nextInt(array.length);
        return h;   
    }
}

【问题讨论】:

  • 你永远不会修改xh 有道理。
  • getRandom() 方法中添加第二个参数有什么意义?
  • @FarazDurrani 这无济于事,因为getRandom() 返回其第二个参数而不是随机值
  • @Ivan 试图返回 rnd 也给了我一个错误。
  • 作业,也许?

标签: java arrays random


【解决方案1】:

您需要将您的getRandom() 更改为以下内容

public static int getRandom(int[] array) 
{
    int rnd = new Random().nextInt(array.length); //generate random index
    return array[rnd]; // get element by random index
}

然后拨打System.out.println(getRandom(myArray));

【讨论】:

  • 谢谢!那是一个非常快速的反应。所以调用 print 语句的方法只是打印返回给 main 的东西?
  • 正确。执行System.out.println(<some method>); 将打印从该方法返回的值。
【解决方案2】:

Java 通过值而不是引用传递参数,因此 x 值不会在 getRandom 方法内更新。 因此,当您调用 getRandom 时,会创建 h 变量并获取参数 x 的值的副本,即 0 值。然后您将返回值为 0 的 h 值。

【讨论】:

    【解决方案3】:

    Java 是原始类型的“按值传递”。这意味着当您将数字作为参数传递给另一个方法时,原始值不会在该方法内被修改。您希望 x 变量变为 h 变量,但这是两个不同的变量,更新 h 不会更新“x”。

    【讨论】: