Java数字随机化器的输出为null
在这个程序中,我创建了一个名为Java数字随机化器的输出为null,java,arrays,loops,null,output,Java,Arrays,Loops,Null,Output,在这个程序中,我创建了一个名为ArrayExample的类,并创建了一个随机数来填充它的元素和一个toString()方法。为什么我的输出为null?代码看起来没有错误: public class arran { public static void main(String[] args) { ArrayExample[] no1 = new ArrayExample[5]; System.out.println(Arrays.toString(no1)
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();
}
}
}
公共类arran{
公共静态void main(字符串[]args){
ArrayExample[]no1=新的ArrayExample[5];
System.out.println(Arrays.toString(no1));
}
公共类数组示例{
int[]数组;
阵列示例(内部透镜){
数组=新整数[len];
for(int i=0;i StringBuilder sb=新的StringBuilder(array.length);
for(int i=0;i
您正在创建ArrayExample[5]
,它是由五个ArrayExample
对象组成的数组,而不是一个构造函数参数为5
的ArrayExample
。看起来您的意图是调用构造函数ArrayExample(int-len)
,但它从未被调用
请尝试以下方法:
public static void main(String[] args) {
ArrayExample no1 = new ArrayExample(5); // Invokes the constructor you wrote
System.out.println(no1.toString()); // Uses the toString method your wrote
}
将内部类设置为静态,以便主方法可以访问它:
public static class ArrayExample {
并修复您的.toString()
方法:
public String toString() {
return Arrays.toString(array);
}
此代码中存在问题:
ArrayExample[] no1 = new ArrayExample[5];
System.out.println(Arrays.toString(no1));
这声明了一个特定类型(ArrayExample
)的数组和一个特定长度(5),但它不做任何其他事情。第一行生成一个包含五个空值的变量引用no1
。这就是你打印出来时看到的
[null, null, null, null, null]
下面是另一个示例,但使用Object
来强调代码除了创建空数组和打印空值之外没有做任何事情
Object[] no2 = new Object[5];
System.out.println(Arrays.toString(no2));
此代码具有相同的输出:
[null, null, null, null, null]
下面的代码将初始化数组(就像您刚才所做的那样),然后创建ArrayExample
的新实例,并将其保存在每个数组元素中。(我还将ArrayExample
移出了主类定义,以便进行编译)
以下是运行此更新代码的输出:
[6474373150570442153, 27524825597078735826, 58127219204026904839, 90611080549351937198, 6503557163540938849]
设置数组内容的另一个选项是使用以下一行:
Arrays.setAll(no1, k -> new ArrayExample(10));
StringBuilder sb=新的StringBuilder(array.length);错误可能是阵列尚未初始化,可能是您创建了
新阵列示例[5]
,但未在其中放入任何内容。这就是为什么它只包含null
五次。
Arrays.setAll(no1, k -> new ArrayExample(10));