2014-06-14 96 views
-4

我不能爲我的生活弄清楚這一點! 它說第20行有一個空指針異常,就是這一行。Java中的NullPointerException ArrayList

walls.add(new Wall(random.nextInt(20), random.nextInt(20))); 

我把它聲明不正確嗎?我究竟做錯了什麼?它是如此愚蠢的事情之一,我只是盲目的?

下面是完整的代碼:

package com.astar.world; 

import java.util.ArrayList; 
import java.util.List; 
import java.util.Random; 

import com.astar.objects.Player; 
import com.astar.objects.Wall; 

public class World { 

private Player player; 
private List<Wall> walls; 
private Random random; 

public World() { 
    player = new Player(2, 2); 
    walls = new ArrayList<Wall>(); 
    for (int i = 0; i < 10; i++) { 
     walls.add(new Wall(random.nextInt(20), random.nextInt(20))); 
    } 
} 

public void update(float deltaTime) { 

} 

public Player getPlayer() { 
    return player; 
} 

public List<Wall> getWalls() { 
    return walls; 
} 

}

以下是錯誤:

Exception in thread "LWJGL Application" java.lang.NullPointerException at com.astar.world.World.(World.java:20) at com.astar.screens.GameScreen.(GameScreen.java:13) at com.astar.game.AStarAlgoGame.create(AStarAlgoGame.java:11) at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136) at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)

回答

4

random未初始化,所以NullPointerException發生。

要解決此只是去

private Random random = new Random(); 
+0

爲什麼-1這個答案? – berserk

+0

我不明白... –

+1

來自海報誰認爲你不應該回答這個問題,因爲它太簡單,不問。忽略它並繼續前進。實例化的 –

1

我沒有看到你在你的代碼實例變量random

+0

咄哦,謝謝! – user3397452

+1

實例化將是更合適的單詞而不是初始化 –