【问题标题】:Exception in thread "main" java.lang.NullPointerException? What does this mean?线程“主”java.lang.NullPointerException 中的异常?这是什么意思?
【发布时间】:2013-02-27 15:38:24
【问题描述】:

尝试运行此程序时出现错误。这不是整个程序,只是我认为问题所在的几个细节。错误指出

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(){ for(int i = 0; i

我的编码可能完全错误。我还在学习中,请耐心等待。谢谢!

【问题讨论】:

    标签: arrays methods runtime-error is-empty


    【解决方案1】:

    按照 Dewfy 的说法,board 是 Cell 对象的数组。这意味着它是Cell 对象的占位符——一堆nulls 等待被Cell 替换。

    如果说,位置 1 的对象 (board[1]) 尚未分配 Cell 对象(即您尚未发出类似 board[1]=new Cell() 或类似的命令),那么 board[1] 是 @987654329 @。因此,如果您要询问board[1].isEmpty(),您会得到NullPointerException,因为您正在尝试调用null 对象上的方法。

    现在,您的错误很可能来自board[randSpace]null。所以,问题是:它是否包含Cell 对象?您是否使用 Cell 对象初始化了您的数组?

    检查这一点的一种方法是说: if (board[randSpace]==null || board[randSpace].isEmpty()) .....

    【讨论】:

      【解决方案2】:

      这一行出现问题:

      if(board[randSpace].isEmpty())
      

      所以假设 randSpace 的 obect 已经存在,如果不存在,则创建对象(Cell)。但是对象还没有创建,如果为空isEmpty(),你怎么能问它。只需先检查 null

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-25
        相关资源
        最近更新 更多