Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,如何在while循环中修复此nullPointerException?_Java_Loops_While Loop_Nullpointerexception_Null - Fatal编程技术网

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

在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++; }

在一个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++;
}
对象
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