【问题标题】:java.lang.NullPointerException when filling array [duplicate]填充数组时出现java.lang.NullPointerException [重复]
【发布时间】:2016-06-19 04:30:42
【问题描述】:

目标:通过随机数和排序数创建大小为x 的数组。

Array.java

import java.util.Random;

/**
 * Created by cazorla19 on 05.03.16.
 */
public class Array {

    int myArray[];
    Random rand;

    Array() {
    }

    Array (int x) {
        Array myArray[];
        myArray = new Array[x];
        for (int i=0; i<x; i++) {
            myArray[i] = new Array();
        }
    }

    int[] ArrayFill () {
        for (int i=0; i<myArray.length; i++) {
            int j = rand.nextInt();
            myArray[i] = j;
        }
        return myArray;
    }

    int[] ArraySort (){
        System.out.println ("Here is the Bubble sort!");
        for (int i=0; i<myArray.length; i++) {
            for (int j=0; j<myArray.length - i - 1; j++) {
                if (myArray[j] > myArray[j+1]) {
                    int temp = myArray[j];
                    myArray[j] = myArray [j+1];
                    myArray[j+1] = temp;
                }
            }
        }
        return myArray;
    }

    void ArrayPrint() {
        for (int i=0; i<myArray.length; i++) {
            System.out.print (myArray[i] + ", ");
        }
    }

}

ArrayDo.java

/**
 * Created by cazorla19 on 05.03.16.
 */
public class ArrayDo extends Array {

    public static void main (String args[]) {
        int x = 10;
        Array labArray = new Array(x);
        labArray.ArrayFill();
        labArray.ArrayPrint();
        labArray.ArraySort();
        labArray.ArrayPrint();
    }
}

某种例外。

Exception in thread "main" java.lang.NullPointerException
    at Array.ArrayFill(Array.java:23)
    at ArrayDo.main(ArrayDo.java:10)

这就是我尝试使用数组长度的地方。试图通过这个问题 [1] [2] 弄清楚。尽管我在数组构造函数中做了,但我认为我不能从 NULL 更改数组值。有没有人强迫过类似的问题?我知道这应该很容易,但仍然无法意识到问题所在。

【问题讨论】:

    标签: java arrays nullpointerexception null-pointer


    【解决方案1】:

    问题是构造函数Array(int x) 没有初始化类变量int myArray[]。它只初始化在构造函数中定义的局部变量数组myArray[]

    【讨论】:

      【解决方案2】:

      初始化以下值,一切顺利!

      int myArray[]=new int[10];
      Random rand=new Random();
      

      【讨论】:

      • 哦,是的!实际上问题是随机的。我没有正确声明它,变量不是随机类实例,所以数组很好。非常感谢!
      【解决方案3】:

      你的构造函数没有意义。它初始化一个不同类型的本地数组,然后初始化具有相同名称的数组成员,这意味着该数组成员保持未初始化。

      应该是:

      Array (int x) {
          myArray = new int[x];
      }
      

      您不需要 Array 实例 (Array myArray[]) 的数组。

      【讨论】:

      • 对。我事先做了,但 Java 解释器卡在空异常上。我认为这是空值数组的问题,但问题在于 Random 函数。谢谢。
      猜你喜欢
      • 2012-12-14
      • 1970-01-01
      • 2013-04-08
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多