为什么这段代码没有返回字符串?

时间:2015-12-11 05:05:03

标签: java if-statement

抱歉丑陋的代码。 (我是新编码员,试图自学Java。) 我只是想知道为什么http://codingbat.com上的编译器拒绝运行它而是返回错误:

This method must return a result of type String

这是代码.......................

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";
    }

}

5 个答案:

答案 0 :(得分:1)

如果那些if条件的 none 证明是真的,你需要考虑将返回什么。例如,如果传入字符串"paxdiablo"

简单:

return "Stuffed if I know!";

在功能关闭括号之前可能是所有需要的,尽管你可能想要使用一些更合适的东西: - )

实际上,抓一点。用笔和纸坐下来,实际记下你期望的所有输入以及所有输出应该是什么。

然后考虑如果输入不是你想要的输出应该是什么。将其翻译成一系列if语句和最终return语句应该非常简单。

答案 1 :(得分:0)

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.";
}

答案 2 :(得分:0)

你可以在最后添加最后一个else语句,这将在你的if条件没有运行时执行,如下所示 -

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

答案 3 :(得分:0)

如果你在真实的IDE上运行它,比如eclipse,你会得到错误:

missing return statement

现在你可能在想,

  

&#34;但是Ruchir,我已经有4个退货声明了!&#34;

不。这些return语句都在if语句中,这意味着如果 if语句没有被执行,编译器就不知道该怎么做返回。这将抛出空指针异常。

如果您确定将执行其中一个if语句,只需输入一个空的return语句:

return;

通过制作一个没有虚空的方法,你说它返回一些东西。

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

答案 4 :(得分:0)

如果您没有&#39;如果&#39;满足条件,您仍然需要返回一个字符串或只是将以下内容添加到方法的底部。

return null;