2016-01-24 79 views
-1

我是一個編程新手。請解釋一下,以便初學者能理解。我的數組是空的嗎?如果是這樣,爲什麼?錯誤「java.lang.NullPointerException」

我試圖建立一個彩票。 首先我用所需數量的數字填充數組。然後畫一個數字。該號碼從彩票中刪除,並返回到主控臺上打印的主號碼。這一直重複直到所有的數字都被繪製出來。

這就是我想要的。但是我得到錯誤「java.lang.NullPointerException」。我的數組是空的嗎?如果是這樣,爲什麼?

import java.util.*; 

public class Tombola { 

    private ArrayList<Integer> lottery; 
    private int numbers; 

    public Tombola(int n){ 

    this.numbers = n; 
    ArrayList<Integer> lottery = new ArrayList<Integer>(); 
    for(int i = 0; i < this.numbers; i++){ 
     this.lottery.add(i+1); 
    } 
    } 

    public int draw(){ 
    int drawnNumber = this.lottery.get((int) (Math.random() * numbers)); 
    for(int i = 0; i < numbers; i++){ 
     if(this.lottery.get(i) == drawnNumber){ 
      this.lottery.remove(i); 
      break; 
     } 
    } 
    this.numbers--; 
    return drawnNumber; 
    } 

    public static void main(String[] args) { 

    int x = 10; 
    Tombola jackpot = new Tombola(x); 
    for(int i = 0; i < x; i++){ 
    System.out.println(jackpot.draw()); 
    } 
    } 
} 
+0

定義'lottery'構造之外,作爲類成員。 – Maroun

回答

0

你在你的Tombola構造函數初始化本地ArrayList,而不是你的初始化實例變量。這就是你的實例變量保持爲空的原因。

變化

ArrayList<Integer> lottery = new ArrayList<Integer>(); 

lottery = new ArrayList<Integer>(); 
0

嘗試初始化ArrayList的lotteryconstructor這樣的:

public Tombola(int n){ 
    this.numbers = n; 
    lottery = new ArrayList<Integer>(); 
相關問題