数组不打印内容

Array doesn't print content

我正在尝试使用

打印数组的内容
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;
}

我已经尝试了很多方法,但仍然没有弄明白.. 你能解释一下我做错了什么吗?

非常感谢!

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

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

并且您应该在构造函数中初始化 anArray2 并删除“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并且在完成初始化之前不应该打印数组。

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

把int[]参数去掉就可以正常调用了,肯定要修改方法体

public String toString() {
    return "Array = " + Arrays.toString(a);
}

始终推荐使用覆盖注解,它将防止在编写代码时出现错误....