public class Arrys {
private int[] nums;
//Step 3
public Arrys (int arrySize) {
nums = new int[arrySize];
}
public int [] getNums (){
return nums;
}
}
测试类:
public class TestArrys
{
public static void main(String args[])
{
//Step 4
Arrys arry = new Arrys(10);
System.out.println("\nStep4 ");
for(int index = 0; index < arry.getNums().length; index++) {
System.out.print(arry.getNums());
}
}
}
这非常简单,这就是为什么我认为我做的事情从根本上是错误的。我想要的只是显示数组的值。
这是我回来的。我完全迷失了,我的书中没有任何内容可以解释这一点,也没有谷歌搜索它的帮助。
Step4 [I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440
答案 0 :(得分:8)
您尝试多次打印数组本身。这段代码:
for(int index = 0; index < arry.getNums().length; index++) {
System.out.print(arry.getNums());
}
应该(可能)是这样的:
for(int index = 0; index < arry.getNums().length; index++) {
// println instead of print to get one value per line
// Note the [index] bit to get a single value
System.out.println(arry.getNums()[index]);
}
或者说更简单:
for (int value : arry.getNums()) {
System.out.println(value);
}
当你在一个数组上调用toString()
时,它会返回类似[I @ 1ac88440,其中[表示它是一个数组,我表示数组元素类型是int,而@xxxxxxxx是内存中的地址]。它是诊断性的,但在大多数情况下并不是真正有用。
使用Arrays.toString
获得更有用的表示。
答案 1 :(得分:2)
尝试
System.out.println(java.util.Arrays.toString(arry.getNums()));
而不是循环。
默认情况下,打印出一个数组不会给你一个非常有用的字符串。为了获得你希望的那种输出,你可以循环遍历数组并自己打印出每个元素......或者你可以让java.util.Arrays
做一些肮脏的工作。
答案 2 :(得分:0)
返回数组:
public int [] getNums ()
此循环打印数组引用getNums()。length times ...
for(int index = 0; index < arry.getNums().length; index++) {
System.out.print(arry.getNums());
}
试试这个:
int [] nums = arry.getNums();
for(int index = 0; index < nums.length; index++) {
System.out.print(arry.nums[index]);
}