在这个程序中,我创建了一个名为 ArrayExample
创建了一个随机数来填充元素 toString()
方法。为什么我的输出为null?代码看起来没有错误:
public class arran {
public static void main(String[] args) {
ArrayExample[] no1 = new ArrayExample[5];
System.out.println(Arrays.toString(no1));
}
public class ArrayExample {
int[] array;
ArrayExample(int len) {
array = new int[len];
for (int i = 0; i < array.length; i++) {
array[i] = (int) (Math.random() * 100);
}
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(array.length);
for (int i = 0; i < array.length; i++) {
sb.append(array[i]);
}
return sb.toString();
}
}
}
2条答案
按热度按时间pu82cl6c1#
问题出在以下代码中:
这声明了一个特定类型的数组(
ArrayExample
),和一定的长度(5),但它不做任何其他事情。第一行产生一个变量引用no1
包含五个空值。这就是你打印出来时看到的。下面是另一个例子,但是使用
Object
以突出显示代码除了创建空数组和打印空值之外没有执行任何操作。此代码具有相同的输出:
下面的代码将初始化数组(就像您之前所做的那样),然后创建
ArrayExample
并保存在每个数组元素上(我也搬家了ArrayExample
使它编译)。以下是运行此更新代码的输出:
设置数组内容的另一个选项是使用以下一行:
hi3rlvi22#
你在创造
ArrayExample[5]
,这是一个5的数组ArrayExample
对象,而不是一个ArrayExample
构造函数参数为5
. 看起来你的目的是调用构造函数ArrayExample(int len)
,但从来没人打过电话。试试这个:
将内部类设置为静态,以便可以通过主方法访问:
把你的头发修好
.toString()
方法: