在Java中,如何在while循环中修复此nullPointerException?

时间:2015-05-17 17:13:34

标签: java loops while-loop nullpointerexception null

在java文件中,我一直在带有while循环的行上遇到运行时错误Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException,并且需要找到一种方法来避免这种nullPointerException。

我在此行的当前代码如下所示:

while (b.isOnBoard(row-i, col-i) && b.getState(row-i, col-i).equals(yourcolor))
{
    count++; 
    i++;
}

对象b基本上是一个8乘8的矩阵" board"对于游戏othello。方法isOnBoard将返回一个布尔值,方法getState将返回我的玩家颜色,我的对手颜色(yourcolor)或null。我不明白为什么这些返回null会导致nullPointerException。 谁能告诉我导致此错误的原因以及如何解决?非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

  

方法getState将返回我的玩家颜色,我的对手颜色(你的颜色),或null

如果getState返回null(您说它可能会为空),b.getState(row-i, col-i).equals(yourcolor)将抛出NullPointerException

要避免此情况,请将条件更改为:

while (b.isOnBoard(row-i, col-i) && b.getState(row-i, col-i) != null && b.getState(row-i, col-i).equals(yourcolor))

当然,如果b可能为空(根据您提供的小代码无法判断),那也会导致NullPointerException

答案 1 :(得分:1)

问题是,您的getState()方法可以返回null,并在其上调用equals()

你永远不应该归还nullnull不是一个值。使用枚举或其他返回类型。