我正在使用Sparrow的平台Kmax编写数据采集软件。这个平台拥有自己的类和方法,必须使用它才能熟悉它。我正在尝试制作一个复选框按钮来完成一项工作。为此,我需要将字符串1
或0
分别转换为布尔true
或false
。为此,我构建了以下简单方法
public static boolean stringToBool(String s) {
if (s.equals("1"))
return true;
if (s.equals("0"))
return false;
}
当我尝试编译它时,我收到错误
Runtime.java:30: error: missing return statement }
请注意,第30行是前一代码的最后一行(即。)。
我没有看到任何可能出错的地方。有什么想法吗?
答案 0 :(得分:4)
说这些情况不正确(s
不等于"1"
或"0"
),那么什么?您最后必须return
一个默认值(如果您只想要这两个值,这对您的代码似乎不太好)或throw
Exception
:< / p>
public static boolean stringToBool(String s) {
if (s.equals("1")){
return true;
}
if (s.equals("0")){
return false;
}
throw new Exception("0 or 1 Required");
}
答案 1 :(得分:2)
在所有情况下都需要执行return
语句,但如果if
个语句都是false
,则您没有return语句。
最后提供一个默认案例:
return true;
}
答案 2 :(得分:2)
编译器不知道您的String总是“1”或“0”。因此,作为一种安全措施,它确保您需要返回一些值(尽管您可能实际上从未实际返回它)。
我建议你默认返回false。
public static boolean stringToBool(String s) {
if (s.equals("1")){
return true;}
if (s.equals("0")){
return false;}
return false;
}
答案 3 :(得分:2)
您有几种选择。您的代码无法编译,因为您的代码必须始终具有return语句,但是,当您将其置于if statemens中时,编译器无法为每个可能的执行路径找到返回值。
public static final String TRUE = "1";
public static final String FALSE = "0"
public static boolean stringToBool(String s) {
boolean result = false;
if (s.equals(TRUE)){
return true;
}
return result;
}
public static boolean stringToBool2(String s) {
boolean result = false;
switch(s) {
case FALSE:
result = false;
break;
case TRUE:
result = true;
break;
default:
// Uuups. Throw exception or return false
}
return result;
}