数组不打印内容

时间:2016-09-16 04:05:34

标签: java arrays string int tostring

我正在尝试使用

打印数组的内容
toString()

我无法弄清楚我做错了什么。

输出应该是从0到100的5个随机数,我将把它们全部打印出来后存储在数组中。

这是我的代码:

public class Ary {

private int[] anArray;
private int arraySize;
private String numberAsString;
Random r = new Random();

public Ary(int arraySize) {
    this.anArray = printArray();
}

public Ary() {
    arraySize = 2;
    printArray();
}

public int getArraySize() {
    return arraySize;
}

public void setArraySize(int arraySize) {
    this.arraySize = arraySize;
}

public int[] printArray() {
    // Assign anArray with a custom number
    anArray = new int[arraySize];

    for(int numbers : anArray) {
        anArray[numbers] = r.nextInt(100);
        System.out.println(anArray[numbers] + " ");
    }
    return anArray;
}

@Override
public String toString() {
    return "Array = " + Arrays.toString(anArray);
}
}

输出:

Music.app.Ary@5e2de80c

这是我的代码与Arrays.toString():

public int[] printArray() {
    // Assign anArray with a custom number
    anArray = new int[arraySize];

    for(int numbers : anArray) {
        anArray[numbers] = r.nextInt(100);
        System.out.println(Arrays.toString(anArray));
    }
    return anArray;
}

我已经尝试了很多方法,但仍然无法解决这个问题。你能解释一下我做错了什么吗?

非常感谢!

2 个答案:

答案 0 :(得分:2)

您已更改toString()的签名(因此您不会调用已定义的方法)。相反,你需要像 1

这样的东西
@Override
public String toString() {
    return "Array = " + Arrays.toString(anArray);
}

你应该在你的构造函数 2 中初始化anArray并删除“printArray

public Ary(int arraySize) {
    this.arraySize = arraySize;
    this.anArray = new int[arraySize];
    for (int i = 0; i < arraySize; i++) {
        this.anArray[i] = r.nextInt(101); // <-- [0, 100], or [0, 101)
    }
}

public Ary() {
    this(5); // <-- use the other constructor.
}

1 覆盖注释会提醒您这个错误。
2 在完成初始化之前,不应打印数组。

答案 1 :(得分:1)

这是一种自定义方法System.out.print(array.toString()); 所以你重载了 toString()但是在控制台中打印出对象的是toString()方法(没有参数)被调用的内容......

删除int []参数并且它会正常调用,你需要确保修改方法的主体

public String toString() {
    return "Array = " + Arrays.toString(a);
}
总是建议使用ussing teh override注释,它会在编写代码时防止出现错误....