首页 > 解决方案 > Java Number Randomizer 的输出为 null

问题描述

在这个程序中,我创建了一个名为的类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();
        }
    }
}

标签: javaarraysloopsnulloutput

解决方案


您正在创建ArrayExample[5],它是一个由五个对象组成的数组ArrayExample,而不是一个ArrayExample具有构造函数参数的5. 看起来您的意图是调用构造函数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);
  }

推荐阅读