我正在尝试从此数组中获取随机值。当我运行程序时,它只为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;
}
}
答案 0 :(得分: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));
答案 1 :(得分:1)
Java通过值而不是通过引用传递参数,因此 x 值不会在getRandom方法内更新。 因此,当您调用getRandom时,将创建 h 变量,并获取参数x值(即0值)的副本。然后,您将返回值为0的h值。
答案 2 :(得分:0)
Java是原始类型的“按值传递”。这意味着当您将数字作为参数传递给另一个方法时,原始值将不会在该方法内部被修改。您期望x
变量成为h
变量,但这是两个不同的变量,更新h
不会更新'x'。