【问题标题】:Taking arrays as Parameters to an Object将数组作为对象的参数
【发布时间】:2014-04-30 01:57:27
【问题描述】:

我试图将一个数组作为参数传递给一个对象,但它返回一个空指针异常。

   /**
   *The array that holds all the numbers.
   */
   private int[] nums;

  public IntegerArray(int[] array)
  {
     nums = array;  
  }

编译器声明:

Exception in thread "main" java.lang.NullPointerException
at IntegerArray.<init>(IntegerArray.java:36)

第 36 行调用 nums.length。

【问题讨论】:

  • 你是如何创建IntegerArray 类的?你也可以提供那个代码吗?
  • 是的:IntegerArray numholder = new IntegerArray(nums);
  • nums 是我主要方法中的一个数组。
  • 我没有犯一个简单的错误吧?在另一组代码中,我使它看起来有效: private double [][] data;公共数组(双[][]数组){数据=数组; }
  • 当您将 main 方法中的 nums 数组传递给 IntegerArray 构造函数时,它可能为 null。

标签: java arrays parameter-passing


【解决方案1】:

根据我的理解,这就是您创建新 IntegerArray 的方式:

 IntegerArray numholder = new IntegerArray(nums);

在尝试获取 nums 的长度时会出错。但是,除非您在未发布的代码中的某处对其进行初始化,否则 nums 永远不会真正被初始化。当你说

private int[] nums;

java 实际上并不分配内存。它一直等到分配数组并给它一个长度。

nums = new int[10];

因此,除非您在调用new IntegerArray(nums);之前在其他地方执行此操作,否则内存尚未分配,并且每次您尝试执行与列表相关联的操作时都会得到一个空指针。

【讨论】:

  • 谢谢!我的印象是问题在于传递,而不是初始化。
猜你喜欢
  • 1970-01-01
  • 2020-04-15
  • 2012-01-25
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-17
  • 1970-01-01
相关资源
最近更新 更多