Java 为什么不是';如果这不起作用吗? 公共布尔搜索(int值){ 搜索(根,值); } 专用布尔搜索(节点,int值){ 如果(node==null){return false;} 如果(node.getValue()==value){return true;} else if(node.getValue()>value){System.out.println(“搜索左”+node.getValue()+'>'+value);搜索(node.left,value);} else如果(node.getValue()value){ System.out.println(“左搜索”+node.getValue()+'>'+value); 返回搜索(node.left,value); }否则{ System.out.println(“右搜索”+node.getValue()+”
如果Java 为什么不是';如果这不起作用吗? 公共布尔搜索(int值){ 搜索(根,值); } 专用布尔搜索(节点,int值){ 如果(node==null){return false;} 如果(node.getValue()==value){return true;} else if(node.getValue()>value){System.out.println(“搜索左”+node.getValue()+'>'+value);搜索(node.left,value);} else如果(node.getValue()value){ System.out.println(“左搜索”+node.getValue()+'>'+value); 返回搜索(node.left,value); }否则{ System.out.println(“右搜索”+node.getValue()+”,java,Java,如果或公共布尔搜索(int-value),则没有返回语句{ 搜索(根,值); //在这里添加一个返回 } 专用布尔搜索(节点,int值){ if(node==null){ 返回false; }else if(node.getValue()==value){ 返回true; }else if(node.getValue()>value){ System.out.println(“左搜索”+node.getValue()+'>'+value); 返回搜索(node.left,value); }否则{
或公共布尔搜索(int-value),则没有返回语句{
搜索(根,值);
//在这里添加一个返回
}
专用布尔搜索(节点,int值){
if(node==null){
返回false;
}else if(node.getValue()==value){
返回true;
}else if(node.getValue()>value){
System.out.println(“左搜索”+node.getValue()+'>'+value);
返回搜索(node.left,value);
}否则{
System.out.println(“右搜索”+node.getValue()+”如果node.getValue()
大于或小于value
则打印消息,但不返回任何内容
在这些情况下,您是否打算返回搜索结果
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);
}
}
私有布尔搜索(节点,int值){
if(node==null){
返回false;
}else if(node.getValue()==value){
返回true;
}如果(node.getValue()>value){
System.out.println(“左搜索”+node.getValue()+'>'+value);
返回搜索(node.left,value);
}如果(node.getValue() System.out.println(“右搜索”+node.getValue()+”最重要的是,在最后2个else if语句中没有return语句,但即使在这两个语句中都放一个return语句也不能完全解决错误
当具有返回值的方法时,必须始终在if语句外部或else语句内部有一个返回值(在else-if语句内部不起作用)
基本上,编译器无法知道if语句是否为真,需要保证其中一条语句为真并返回一个值
即使遵循以下模式,也是如此:
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);
}
}
if(a==b)
返回true;
如果(a>b)
返回false;
if(a
作为一个人,我们可以理解这些语句中至少有一条是真的,但编译器不会。如果你知道其中至少有一条语句是真的,那么你可以简单地在末尾放一个返回;
语句,知道它永远不会被调用。如果所有如果语句都是假的,会发生什么?第一条语句都不是search
或者第二个分支中的所有分支都有return
它们不能全部为false。值必须大于、小于、等于或为null。@name未找到编译器不知道这一点。为什么你说这里有一个返回类型?显然,在私有函数的两种情况下,你没有返回任何内容,我也没有n公共功能。当你说“eclipse正在讲述”,这将有助于向我们显示消息,消息通常包含的信息比它们所获得的信息要多。此外,您需要在分支机构之外返回某些信息,即使您从未到达分支机构。在这种情况下,您将到达分支机构,因为大于和小于的案例不会返回任何信息,它们将运行到私人函数。您是否从第一个函数返回?
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);
}
}
if (a == b)
return true;
if (a > b)
return false;
if (a < b)
return true;