2013-02-27 110 views
0

嘗試運行此程序時出現錯誤。這不是整個程序,只是我認爲問題出在哪裏的幾個細節。錯誤指出線程「main」中的異常java.lang.NullPointerException?這是什麼意思?

if(board[randSpace].isEmpty()) and 
cl.makeChutes(5);" 

錯誤是:

"Exception in thread "main" java.lang.NullPointerException 
at ChutesAndLadders.makeChutes(ChutesAndLadders.java:29) 
at ChutesAndLadders.main(ChutesAndLadders.java:67)" 

這是我的計劃:

import java.util.Random; 
public class ChutesAndLadders{ 

Cell [] board = new Cell [100]; 
Random rand = new Random(); 
public int chutes, ladders; 

public void makeChutes (int a){ 
    int makeChutes = a; 
    for (int i = 0; i < a; i++){ 
     int randSpace = rand.nextInt(99); 
     if(board[randSpace].isEmpty()) 
      board[randSpace] = new Cell (-10,"C"); 
     else 
      i--; 
    } 
} 

public static void main(String[] args) { 
// Create an instance of ChutesAndLadders 
ChutesAndLadders cl = new ChutesAndLadders(10,10); 

// Randomly place 5 more chutes and 5 more ladders 
cl.makeChutes(5); 
cl.makeLadders(5); 

這裏是我的isEmpty: 公共布爾的isEmpty(){ 爲(INT I = 0; i < board.length; i ++) if(board [i] .isEmpty()) 返回true; } return false; }

我的編碼可能完全錯誤。我仍然在學習,所以請耐心等待。謝謝!

回答

1

以下是Dewfy說的,板子是一組Cell對象。這意味着它是一個Cell對象的佔位符 - 一堆null正在等待被替換爲Cell

如果說,在位置1(board[1])的對象尚未分配Cell對象(即你沒有發出這樣的命令board[1]=new Cell()或類似的東西),那麼board[1]null。因此,如果您要詢問board[1].isEmpty(),您將得到一個NullPointerException,因爲您正試圖調用null對象的方法。

現在,您的錯誤可能來自board[randSpace]正在null。所以,問題是:它是否包含一個Cell對象?你是否用Cell對象初始化了你的數組?

一種方法來檢查這將是說: if (board[randSpace]==null || board[randSpace].isEmpty()) .....

1

問題似乎與這一行:

if(board[randSpace].isEmpty()) 

所以假定obect在randSpace已經存在,如果不是你創建對象(小區)。但對象還沒有創建,如果你可以問它,如果爲空isEmpty()。首先檢查空值

相關問題