在Java中,如何在while循环中修复此nullPointerException?
在一个java文件中,线程“AWT-EventQueue-0”java.lang.NullPointerException在一个带有while循环的行中始终存在运行时错误在Java中,如何在while循环中修复此nullPointerException?,java,loops,while-loop,nullpointerexception,null,Java,Loops,While Loop,Nullpointerexception,Null,在一个java文件中,线程“AWT-EventQueue-0”java.lang.NullPointerException在一个带有while循环的行中始终存在运行时错误异常,需要找到一种方法来避免此NullPointerException 我在此行的当前代码如下所示: while (b.isOnBoard(row-i, col-i) && b.getState(row-i, col-i).equals(yourcolor)) { count++; i++; }
异常,需要找到一种方法来避免此NullPointerException
我在此行的当前代码如下所示:
while (b.isOnBoard(row-i, col-i) && b.getState(row-i, col-i).equals(yourcolor))
{
count++;
i++;
}
对象b
基本上是游戏《奥赛罗》的8乘8矩阵“棋盘”。方法isOnBoard
将返回布尔值,方法getState
将返回我的玩家颜色、我的对手颜色(yourcolor
)或null
。我不明白为什么这些返回null的函数会导致nullPointerException。
谁能告诉我是什么导致了这个错误以及如何修复它?非常感谢您的帮助
getState方法将返回我的玩家颜色、我的对手颜色(yourcolor)、或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
可能为null(根据您提供的小代码无法判断),这也会导致NullPointerException
,问题是您的getState()
方法可以返回null
,并对其调用equals()
您不应返回null
null
不是一个值。使用枚举或其他返回类型。b不是null,我确信这一点。在我剩下的代码中,它被多次使用,没有错误。。。谢谢你。早些时候我在做!b、 getState(第一行,第一列)。等于(mycolor)&!b、 getState(row-i,col-i).equals(null)
,这导致了相同的错误。为什么!=空值
工作,但不!b、 getState(row-i,col-i).equals(null)
?@namore您不能对null引用调用任何方法。因此b.getState(row-i,col-i).equals(..)
如果b.getState(row-i,col-i)
为空,则抛出NullPointerException
。