Java数组传递通过引用
我有这样的代码:Java数组传递通过引用
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;
}
}
我想到的是,数组通过引用传递和阵列有它的随机值然而,当我尝试打印其空。这是为什么发生?
很难从您提供的代码中肯定地说。我会检查ROWS*COLUMNS
的值。这可能是0,因此您创建一个0大小的数组。
我相信这些常量是好的,因为我使用它们来构建网格。 – Cemre 2012-01-27 23:52:38
由于代码打印[],这证明ROWS * COLUMNS = 0. – user949300 2012-01-27 23:54:24
@Cemre - 您何时设置ROWS和COLUMNS。他们真的应该被设置为声明,因为它们都是大写,这意味着“静态最终”。我的猜测是你在运行这个例程之后设置它们。 – user949300 2012-01-27 23:55:56
你在哪里定义ROWS和COLUMNS?至少它们中的一个必须等于0,将数据结构呈现为int [0]。
由于int
是原始类型,您的数组开始填充0。由于数组无法调整大小,并且Arrays.toString将打印每个单元格(它不会仅仅跳过0- 0通常在int[]
中非常重要,例如!),则此结果不能是数组的非工件正在写入。它必须初始化为0,这意味着ROWS * COLUMNS == 0
。检查ROWS
,COLUMNS
的值,以及它们的类型 - 除int以外的令人惊讶的类型可能会导致这种情况,但0更有可能。
“空”,因为在没有条目? – 2012-01-27 23:47:49
yes打印[] – Cemre 2012-01-27 23:48:31
MIN和MAX的值是多少? – 2012-01-27 23:48:36