我有这段代码:
public static int MAX;
public static int MIN;
public static void startGame(){
MIN = -1;
MAX = 1;
int[] randomGridVals = new int[ROWS*COLUMNS];
fill(randomGridVals);
System.out.println(Arrays.toString(randomGridVals));
<MORE CODE>
}
private static void fill(int[] randomGridVals) {
for(int i = 0 ; i < randomGridVals.length; i++)
{
int rnd = MIN + (int)(Math.random() * ((MAX - MIN) + 1));
randomGridVals[i] = rnd;
}
}
我希望数组通过引用传递,并且数组中有随机值,但是当我尝试将其打印为空时。为什么会这样?
答案 0 :(得分:4)
很难从您提供的代码中确切地说出来。我会检查ROWS*COLUMNS
的值。那可能是0,因此你创建了一个0大小的数组。
答案 1 :(得分:2)
Java is never pass by reference。 It's always pass-by-value
至于空白,请发布ROWS和COLUMNS或检查它们。
答案 2 :(得分:1)
你在哪里定义ROWS和COLUMNS?其中至少有一个必须等于0,将数据结构渲染为int [0]。
由于int
是基本类型,因此您的数组开始填充0。由于数组无法调整大小,并且Arrays.toString将打印每个单元格(它不会只是跳过0s-0在int[]
中通常非常重要,对于一件事!),这个结果不能是一个工件你的数组没有被写入。它必须已初始化为长度0,这意味着ROWS * COLUMNS == 0
。检查ROWS
的{{1}}的值,以及它们的类型 - 除了int以外的令人惊讶的类型可能会在极少数情况下导致这种情况,但0更有可能。