2016-03-05 67 views
-1

目标:通过随机数字和排序数字创建数组,大小为x当填充数组时发生java.lang.NullPointerException

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更改数组值。有没有人强迫类似的问题?我知道这应该很容易,但仍然不知道有什么问题。

回答

0

初始化下面的值,你应该很好去!

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

哦,是的!其实问题是随机的。我没有正确地声明它,变量不是Random类的实例,所以数组很好。非常感谢! – cazorla19

5

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

它应该仅仅是:

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

你不需要Array实例(Array myArray[])的阵列。

+0

对。我事先做了,但Java解释器卡住了null异常。我认为这是一个空值数组的问题,但问题在于随机函数。谢谢。 – cazorla19

4

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

相关问题