Java 为什么这段代码不返回字符串?

Java 为什么这段代码不返回字符串?,java,if-statement,Java,If Statement,对不起,代码太难看了。(我是一名试图自学Java的新程序员。) 我只是想知道为什么上的编译器拒绝运行此命令,而是返回错误: missing return statement 此方法必须返回字符串类型的结果 这是代码 public String startOz(String str) { if (str.length() <= 2) { return str; } else if (str.charAt(0) == 'o' && s

对不起,代码太难看了。(我是一名试图自学Java的新程序员。) 我只是想知道为什么上的编译器拒绝运行此命令,而是返回错误:

missing return statement
此方法必须返回字符串类型的结果

这是代码

public String startOz(String str) {
    if (str.length() <= 2) {
        return str;
    }

    else if (str.charAt(0) == 'o' && str.charAt(1) != 'z') {
        return "o";
    }

    else if (str.charAt(1) == 'z' && str.charAt(0) != 'o') {
        return "z";
    }

    else if (str.substring(0 , 3).equals("oz")) {
        return "oz";
    }

}
公共字符串startOz(字符串str){

if(str.length()您需要考虑如果这些
条件都不成立,将返回什么。例如,如果您传入字符串
“paxdiablo”

一个简单的例子:

return "Stuffed if I know!";
在函数开始之前,可能只需要右大括号,不过您可能希望使用更合适的方法:-)


事实上,把它划掉。拿着纸和笔坐下来,写下你期望的所有输入,以及它们的输出

然后考虑如果输入不是您期望的,那么输出应该是什么。将其转换为一系列
if
语句和最后的
return
语句应该非常容易。

公共字符串startOz(String str){
public String startOz(String str) {
if (str.length() <= 2) {
   return str;
}

else if (str.charAt(0) == 'o' && str.charAt(1) != 'z') {
   return "o";
}

else if (str.charAt(1) == 'z' && str.charAt(0) != 'o') {
return "z";
}

else if (str.substring(0 , 3).equals("oz")) {
  return "oz";
}

return "Your last default String to return.";
}

if(str.length()您可以在末尾添加最后一个else语句,它将在没有if条件运行时执行,如下所示-

else if (str.substring(0 , 3).equals("oz")) {
  return "oz";
}
else{
    return " last string to return" ;
}

如果在实际的IDE(如eclipse)上运行此操作,则会出现以下错误:

missing return statement
现在你可能在想

“但是Ruchir,我已经有4条返回语句了!”

否。这些返回语句都在if语句中,这意味着如果未执行if语句,编译器将不知道返回什么。这将引发null指针异常

如果您确定将执行其中一个If语句,只需放置一个空的return语句:

return;
通过创建一个没有空的方法,您可以说它返回一些东西


只需在if语句之外添加一个return语句。

如果没有满足“if”条件,您仍然需要返回一个字符串,或者只需将以下内容添加到方法的底部

return null;

谢谢Ruchir。组织精美且易于理解的回答@EugeneL。谢谢,我很乐意帮忙!:)