Java返回语句概念

Java返回语句概念,java,tree,return,binary-search-tree,Java,Tree,Return,Binary Search Tree,所以,我想深入打印一个二叉搜索树,我有以下代码: public String printBalancedBSTDepth(Node head) { if(head == null) { // do nothing } else return head.value + " " + printBalancedBSTDepth(head.left) + " " + printBalancedBSTDepth(head.right); } 当

所以,我想深入打印一个二叉搜索树,我有以下代码:

public String printBalancedBSTDepth(Node head) {

    if(head == null) {
        // do nothing
    }
    else 
        return head.value + " " + printBalancedBSTDepth(head.left) + " " + printBalancedBSTDepth(head.right);
}

当head==null时,我不想打印任何内容。为什么Java强迫我在每个条件下都添加一个return语句?我不明白这种需要。在C语言中,您可以将return放在需要的地方,而不是像Java一样将其放在任何地方。如果我在head==null时添加“return”“,我的字符串将如下所示:
4 2 1 3 6 5 7
。许多不需要的空格…

如果您声明您的方法将返回一个
字符串,那么为什么不返回一个呢

正如其他人和您所提到的,您可以返回空字符串
”。或者您可以返回
null
。因此,为了避免多余的多余空格,您可以在打印代码中进行验证,如下所示:

if (result == null ) { // Or result.equals("")
   // Do nothing, or the necessary so those unwanted spaces aren't printed
}

如果方法声明返回类型,则所有不同的路径都必须返回;这很符合逻辑。您可以返回一个空字符串--
“”是的,但在这种情况下,我无法打印所需的字符串,因为这个原因。“为什么Java强制我在每个条件下都添加return语句?”因为您的方法被声明为返回
String
,所以编译器试图保证您将为每个场景返回一些内容。那么,我的代码的解决方案是什么?如果它说
String
,它如何返回null?如果我返回null,它将在屏幕上打印“null”。因为实际上,您正在返回一个引用。在这种情况下,对
字符串
对象的引用。如果返回null,则返回一个不指向任何内容的引用。所以,它仍然有效。@ConstantinDogaru如我所述,您必须在代码中处理该特定情况(
if(result==null).
)。