public boolean search(int value) {
search(root,value);
}
private boolean search(Node node, int value) {
if (node == null) {return false;}
else if(node.getValue() == value){return true;}
else if (node.getValue() > value) { System.out.println("searching left" + node.getValue() + '>' + value); search(node.left,value);}
else if (node.getValue() < value) { System.out.println("searching right" + node.getValue() + '<' + value); search(node.right,value);}
}
出于某种原因eclipse告诉我,我需要一个返回类型,即使我已经有一个。添加&#34;返回false&#34;最后安抚eclipse只是让if语句返回它时不返回东西。
答案 0 :(得分:2)
如果达到return
或>
个案,则您没有<
声明。在这两种情况下,您需要return
相应的递归调用返回的内容。
编译器仍然会抱怨,因为它不会意识到你已经涵盖了所有可能的情况;它不考虑价值观。如果你也没有条件将最后一个案例变成else
,那么这将满足编译器。
此外,在顶部search
方法中,返回对另一个search
方法的调用返回的内容。
答案 1 :(得分:1)
public boolean search(int value) {
search(root,value);
// add a return here
}
private boolean search(Node node, int value) {
if (node == null) {
return false;
} else if (node.getValue() == value) {
return true;
} else if (node.getValue() > value) {
System.out.println("searching left" + node.getValue() + '>' + value);
return search(node.left, value);
} else {
System.out.println("searching right" + node.getValue() + '<' + value);
return search(node.right, value);
}
}
答案 2 :(得分:0)
如果node.getValue()
大于或小于value
,则会打印邮件,但不会返回任何内容。
您是不是要在这些情况下返回搜索结果?
private boolean search(Node node, int value) {
if (node == null) {
return false;
} else if(node.getValue() == value){
return true;
} else if (node.getValue() > value) {
System.out.println("searching left" + node.getValue() + '>' + value);
return search(node.left,value);
} else if (node.getValue() < value) {
System.out.println("searching right" + node.getValue() + '<' + value);
return search(node.right,value);
}
}
答案 3 :(得分:0)
最重要的是,在最后两个if语句中没有return语句,但即使在它们中都放置一个return语句也不能完全解决错误。
当拥有带返回值的方法时,必须始终在if语句之外或else语句中返回值。 (在其他内部,如果不起作用)。
基本上,编译器无法知道任何if语句是否为真。需要保证其中一个语句为真并返回一个值。
即使它遵循以下模式也是如此:
if (a == b)
return true;
if (a > b)
return false;
if (a < b)
return true;
作为一个人,我们可以理解这些陈述中至少有一个是真的,但编译器却没有。如果你知道至少有一个陈述是真的,你可以简单地在最后放一个return;
语句,知道它永远不会被调用。