尝试运行此程序时出错。这不是整个程序,而是我认为问题所在的几个细节。错误指出
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: public boolean isEmpty(){ for(int i = 0; i&lt; board.length; i ++) { if(board [i] .isEmpty()) 返回true; } 返回false; }
我的编码可能完全错了。我还在学习,请耐心等待。谢谢!
答案 0 :(得分:1)
此行出现问题:
if(board[randSpace].isEmpty())
所以假设randSpace中的obect已经存在,如果没有你创建对象(Cell)。但是尚未创建对象,如果为null isEmpty()
,您可以如何询问它。先检查一下null
答案 1 :(得分:1)
根据Dewfy的说法,board是一组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())
.....