当我以这种方式编译代码时,我得到了上面提到的错误:
public class SymTree{
public static boolean isSym(BT bt)
{
return(IsMirror(bt.left, bt.right));
}
private static boolean IsMirror(BT lr,BT rr)
{
if(lr==rr==null) (((ERROR HERE)))
return true;
.....
但是当我像这样编译时
private static boolean IsMirror(BT lr,BT rr)
{
if(lr==rr)&&(lr==null))
return true;
.......
我没有错误。错误是具有nulltype和boolean的无法比较的类型,但是我的比较对象中没有一个是boolean-它们都是来自BT(二叉树)类的对象,它已在别处定义。 谢谢!
答案 0 :(得分:2)
检查Map(rep, a, b)
。 (lr==rr==null)
是lr==rr
。它是原始的,无法与boolean
进行比较。
答案 1 :(得分:1)
它给你这个错误的原因是因为你写这个:
if (lr==rr==null)
编译器将其解释为类似于以下之一:
if ((lr==rr) == null)
if (lr == (rr==null))
基本上,您将布尔条件(lr==rr
或rr==null
)与可空类型进行比较,这是不合理的,因为布尔值是值类型并且可以永远不会为空。
答案 2 :(得分:0)
这是因为在float
中,if(lr==rr==null)
是一个布尔比较,您通过执行lr==rr
与null
进行比较。
例如,如果假设==null
等于lr
,则rr
将返回lr==rr
,然后您将比较true
。在这里你会得到错误,因为boolean和null是不可比较的。