Java 为什么这段代码不返回字符串?
对不起,代码太难看了。(我是一名试图自学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
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。谢谢,我很乐意帮忙!:)