Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java数字随机化器的输出为null_Java_Arrays_Loops_Null_Output - Fatal编程技术网

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;iStringBuilder 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));