【问题标题】:Array doesn't print content [duplicate]数组不打印内容[重复]
【发布时间】:2017-01-24 05:11:52
【问题描述】:

我正在尝试使用

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

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

非常感谢!

【问题讨论】:

  • Java 数组不会覆盖 Object.toString()。你可以使用Arrays.toString()
  • @ElliottFrisch 我已经试过了,结果还是一样
  • @S.Anthony 你确定吗? Arrays.toString(anArray); 应该可以正常工作。
  • @AndrewL。一秒钟,我也加这段代码
  • 请不要编辑您的问题以在标题中添加“(已解决)”之类的内容,并通过更正您的代码使答案无效。如果您设法解决了自己的问题,请在您的解决方案中发布答案(或接受帮助您解决问题的答案)。我已恢复您上次的编辑。

标签: java arrays string int tostring


【解决方案1】:

您更改了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 在完成初始化之前,您不应该打印数组。

【讨论】:

  • 嗯...有趣。现在我得到了这个:Array = [ ]
  • @S.Anthony 你现在在哪里/如何初始化数组?
  • 我更新了我的代码
  • 发现我的错误,效果很好。非常感谢埃利奥特
【解决方案2】:

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

去掉int[]参数就可以正常调用了,你也需要修改方法体

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

总是推荐使用覆盖注释,它可以防止在编写代码时出现错误....

【讨论】:

  • 您可能希望那里的@Override 注释覆盖对象的方法
  • 另外,还不清楚a 是从哪里来的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
  • 2016-03-02
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多