2014-10-04 43 views
0

這裏是我的方法:(初學者Java)爲什麼我的數組爲null?

public int randomIntegers() { 
    array = new int[20]; 
    Random r = new Random(); 

    for(i =0; i<20; i++) { 
     int intRandom = r.nextInt(1000); 
     if (intRandom >= 100) { 
      array[i] = intRandom;  
     } 
    } 
    return array[i]; 
} 

的println:

System.out.println(array[i]); 

當我在main方法使用的println,我得到一個NullPointerException。誠實地嘗試從概念上理解爲什麼這不起作用,無濟於事。

+1

向我們展示你想要打印什麼,或者你的主要方法,還要定義大小,最大和最小值 – 2014-10-04 03:22:43

+0

如果你想返回完整的數組然後返回參考 – 2014-10-04 03:26:49

+0

嘗試在打印之前打印「i」的值。還有 - 你在調用'print'語句之前初始化數組嗎? – Tirath 2014-10-04 03:35:46

回答

3

您試圖返回一個整數,而不是整個數組。該整數甚至不是有效的,因爲您試圖在數組中的最後一個整數之後返回整數。

我猜你想整個數組回到你的主要方法,如果是的話,你需要改變方法簽名返回一個數組,並更改return語句,因爲這樣的:

public int[] randomIntegers() { 
    //code.... 
    return array; 
} 

另一方面,你並不總是用生成的整數來填充你的數組。當產生的隨機數是<100(大約每隔十次)時,一個時隙將被填充,因此在整數的時隙中具有值0。

+0

原始默認值將被設置 - '0',以防'if'未被滿足。如果我不是,請糾正我。 – Tirath 2014-10-04 03:46:37

0

如果你的問題的代碼是你實際運行代碼的真實反映,那麼

 System.out.println(array[i]); 

的唯一合理解釋拋出NPE是:

  • 你沒有稱爲randomIntegers()(還)。
  • 您正在打印的array不同變量到您在randomIntegers方法中分配的array

如果不能解釋的東西,請與您整個程序和堆棧跟蹤更新你的問題。

相關問題