缺少Java / Kmax中的return语句

时间:2014-02-04 21:46:58

标签: java compiler-errors return

我正在使用Sparrow的平台Kmax编写数据采集软件。这个平台拥有自己的类和方法,必须使用它才能熟悉它。我正在尝试制作一个复选框按钮来完成一项工作。为此,我需要将字符串10分别转换为布尔truefalse。为此,我构建了以下简单方法

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行是前一代码的最后一行(即。)。

我没有看到任何可能出错的地方。有什么想法吗?

4 个答案:

答案 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;
}