数组不打印内容
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);
}
并且您应该在构造函数中初始化 anArray
2 并删除“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);
}
始终推荐使用覆盖注解,它将防止在编写代码时出现错误....
我正在尝试使用
打印数组的内容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);
}
并且您应该在构造函数中初始化 anArray
2 并删除“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);
}
始终推荐使用覆盖注解,它将防止在编写代码时出现错误....