看起来可能是一个愚蠢的问题,但我无法正确理解为什么每次都会在控制台上发生这种情况。我已检查过每一行,但每行都正确响应,但是当它出现shuffle然后打印时,它给了我这个输出。
我的代码:
package rando;
import java.util.Arrays;
import java.util.Collections;
public class random
{
public static void main( String [] args)
{
Integer[][] arr = new Integer[2][2];
for (int i = 0; i < arr[1].length; i++)
{
for(int j=0; j<arr[1].length;j++)
{
arr[i][j] = i;
// int iData=(int) (Math.random()*(int)arr[i][j]);
}
}
Collections.shuffle(Arrays.asList(arr));
System.out.println(Arrays.toString(arr));
}
}
答案 0 :(得分:2)
在这里,您创建一个大小为2的数组,其中包含两个大小为2的数组:
Integer[][] arr = new Integer[2][2];
在这里,您打印数组的内容:
System.out.println(Arrays.toString(arr));
如果您在数组上调用.toString()
,则会得到类似[[Ljava.lang.Integer;@3af4d6b3
的表达式。由于Arrays.toString()
会对数组中的每个元素调用.toString()
,因此可以解释结果。正如@JB Nizet所示,您可能打算致电Arrays.deepToString()
。
答案 1 :(得分:2)
改为使用这个:
System.out.println(Arrays.deepToString(arr));
答案 2 :(得分:1)
数组不会覆盖toString()
方法。这就是您使用Arrays.toString()
而不是直接使用arr.toString()
的原因。但是你的数组包含数组,因此Arrays.toString()
方法显示外部数组包含的每个内部数组的无意义toString()
。
如果你想要一个有意义的表示,循环数组,或使用Arrays.deepToString()
,或者改用List。