2013-06-18 64 views
1

我對java有點新,所以請將愚蠢的答案,如果我是四歲。 = -D空指針異常 - 將項目添加到ArrayList

我對此代碼使用slick。如果你需要更多的代碼,請問。我只想發佈我認爲相關的內容,但由於我是編程新手,可能是錯誤的。

我追蹤了問題的起因,將一個新創建的對象添加到arrayList中。 下面的代碼:

public ArrayList<Walls> walls; 
Walls w1 = new Walls(new RPoint(100,100), brickwall, brickwall, 100); 
walls.add(w1); //this is where the error will occur at. 

牆壁類:

package main; 

import org.newdawn.slick.Image; 
import org.newdawn.slick.geom.Rectangle; 

public class Walls { 

private RPoint p; 
private Image i; 
private Image i2; 
private int durability; 
//private Rectangle r = new Rectangle (1,1,1,1); 

public Walls(RPoint a, Image b, Image c, int d){ 
    this.p=a; 
    this.i=b; 
    this.i2=c; 
    this.durability=d; 
// Rectangle r = new Rectangle(Math.round(a.getX()), Math.round(a.getY()), Math.round(b.getWidth()), Math.round(b.getHeight())); 

} 

    public Image getImage() 
    { 
    return this.i; 
    } 

// public Rectangle getRect() 
// { 
//  return this.r; 
// } 

    public Image getSecondaryImage() 
    { 
    return this.i2; 
    } 

    public int getLife() 
    { 
    return this.durability; 
    } 

    public RPoint getPoint() 
    { 
    return this.p; 
    } 

     } 

感謝任何幫助或連看。

+0

public ArrayList walls = new ArrayList (); – user1516873

回答

4

arrayList必須初始化! :)

public ArrayList<Walls> walls = new ArrayList<Walls>(); 

編輯:

True時宣佈這一領域的傳統方法是使用接口類型,像這樣:

public List<Walls> walls = new ArrayList<Walls>(); 
+2

甚至更​​好,也許 - '公開列表 walls = new ArrayList ();' – vikingsteve

+0

我非常害怕愚蠢。我甚至花了超過30分鐘的時間在Wall類中尋找和改變數值......哈哈 – Shawn

+0

像這樣的事情只需要被理解一次,不用擔心你很快就會得到它的保留。 –

0

你從來沒有初始化的ArrayList;你在內存中預留了一個地方,但是直到你初始化它的值爲空。

0
public ArrayList<Walls> walls = new ArrayList<Walls>(); 

walls是調用它的任何方法之前必須指向一個對象(通常使用new創建)的引用。