我现在正在学习Java并且有一个任务,我应该创建一个方法,在输入两个关键字之一之前不断询问用户输入。然后,它应该返回一个int。
public static int getCommand(){
String command = IOTools.readString("Enter Command!");
if (command.equals("exit")){
return 1;
} else if (command.equals("shift")){
return 0;
} else {
getCommand();
}
}
我遇到的问题是eclipse告诉我要么将返回类型更改为void,要么在if块之后添加一个return语句。 我的递归方法有问题吗?
答案 0 :(得分:6)
您在递归调用中缺少return
语句
public static int getCommand(){
String command = IOTools.readString("Enter Command!");
if (command.equals("exit")){
return 1;
} else if (command.equals("shift")){
return 0;
} else {
return getCommand(); // Added return here
}
}
答案 1 :(得分:1)
此处缺少退货声明
else {
getCommand();
}
你的方法的所有路径都需要返回一些东西。
答案 2 :(得分:1)
您需要在最后一种情况下添加return
类型
public static int getCommand(){
String command = IOTools.readString("Enter Command!");
if (command.equals("exit")){
return 1;
} else if (command.equals("shift")){
return 0;
} else {
return getCommand();
}
}
此函数getCommand();
调用返回int
值但不在else
情况下,因此如果控件属于else
情况,那么您的递归函数调用将被执行虽然无法保证getCommand();
会因int
情况而返回else
值,因此编译器会检测到因此错误,并且根据这种情况,return
类型不是{ {1}},java说
函数中的每个执行路径都必须指向RETURN语句