我遇到了一个看似有趣的错误......
对于我的一个课程,我需要编写一个程序来模拟旧的“x学生沿着走廊关闭储物柜,每x间隔关闭储物柜”的情景。然而,一个有趣的转折是问题需要有相同数量的学生和储物柜,最多100个。所以我决定使用一个数组,用户输入一个数字 - 然后用于设置数组大小, for-loop条件等等......你得到了图片,对吗?
无论如何,我的代码会编译,但在运行时它会输出类似的内容:
[I@36ae2282
有人(在另一个线程/问题/无论你打电话给它)中声明这是数组在系统内存中的物理位置,并从.getNums()
方法获取数组中的实际数字将是必需的。我的问题是:.getNums()
方法似乎不存在于Java中(也许它是另一种语言的一部分?),那么下一个最佳替代方案或解决方案是什么?
答案 0 :(得分:4)
你打印出int数组,这是传统数组的.toString()表示。您可能希望使用Arrays.toString()
来获得更好看的输出。
答案 1 :(得分:1)
要打印数组的内容,请遍历数组中的每个元素:
int[] array = new int[10];
for(int s : array) System.out.println(s);
// or
for(int i = 0; i < array.length; i++) System.out.println(array[i]);
int[] array = new int[10];
System.out.println(Arrays.toString(array));
将打印如下内容:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
无论如何,我的代码会编译,但在运行时它会输出类似的内容:
[I@36ae2282
我假设您正在尝试打印这样的数组:
int[] array = new int[10];
System.out.println(array);
array
是一个对象,因此您正在调用println(Object)
PrintStream
Object的toString()
,它在内部调用传递的对象上的System.out
。数组的toString()
类似于hashCode()
的Class.getName()
JavaDoc:
toString()
所以输出结果如下:
getClass().getName() + "@" + Integer.toHexString(hashCode());
其中[I@756a7c99
代表数组的深度,[
代表I
。 int
是从{{3}}返回的十六进制数值。
另请阅读{{3}}。