if (current.leftChild.iData != '+' && current.rightChild.iData != '+')
对于这行代码,我试图检查当前节点的 leftChild 和当前节点的 rightChild 是否都 == '+' 或字符加号。如果其中任何一个不 = 字符 + 我想执行其他代码。我得到了这一行的空指针异常以及我用来调用这行代码的方法。iData 只是节点内部的信息。
if (current.leftChild.iData != '+' && current.rightChild.iData != '+')
对于这行代码,我试图检查当前节点的 leftChild 和当前节点的 rightChild 是否都 == '+' 或字符加号。如果其中任何一个不 = 字符 + 我想执行其他代码。我得到了这一行的空指针异常以及我用来调用这行代码的方法。iData 只是节点内部的信息。
如果您收到空指针异常,则表示以下两种情况。
1. 当前为空。
2. leftChild 为空/rightChild 为空。
3. iData 为空
但是因为你没有提供很多细节。我将无法帮助你。
要么current.leftChild
or current.rightChild
(或current
本身)没有被正确设置并且是null
. 尝试访问null
结果中的成员NullPointerException
。
如果current
,current.leftChild
或者current.rightChild
是null
,你会得到一个NullPointerException
. 您需要先执行空检查。
使用断点查看 current.leftChild.iData 和 current.rightChild.iData 的值。或者你可以写:
System.out.println("leftChild:" + current.leftChild.iData);
System.out.println("leftChild:" + current.rightChild.iData);
您将需要检查对这些值的更改,因为在您的代码中某处已将它们设置为空。一旦它们为空,系统将给您 NullPointerException,因为这些对象不再存在。
首先尝试打印每一部分以找出什么是空的,当你到达给你带来麻烦的那部分时,你应该得到一个 NPE,这将左右分开成单独的故障。请注意,如果您制作这些单独的行并且两者都失败了,那么您只会得到第一行的失败。
现在:
if (current.leftChild.iData != '+' && current.rightChild.iData != '+') 对于>这行代码我试图检查当前节点的leftChild和>当前节点的rightChild两者 == '+' 或字符加号。如果>其中任何一个都不=字符+我想执行其他代码
你写的代码不会(一旦它不抛出异常)测试你说你想要的。你说你想看看是否有一个是 != 到 '+',但是这段代码只测试两者是否都是 != '+',因此你错过了一些我相信你想要捕捉的条件。事实上,如果你真的想执行其他代码,如果其中一个不等于'+',那么你想要的是
if (current.leftChild.iData == '+' && current.rightChild.iData == '+')
{
//code you execute if both are equal to '+'
}
else
{
//code you execute if either (or both) is not equal to '+'
}