我正在尝试使用
打印数组的内容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;
}
我已经尝试了很多方法,但仍然无法解决这个问题。你能解释一下我做错了什么吗?
非常感谢!
答案 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注释,它会在编写代码时防止出现错误....