在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。
谁能告诉我导致此错误的原因以及如何解决?非常感谢任何帮助。
答案 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()
。
你永远不应该归还null
。 null
不是一个值。使用枚举或其他返回类型。