2016-03-05 69 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[]

相關問題