返回while和if else循环

时间:2013-06-21 22:03:46

标签: java

我有下面的方法,它希望返回类型为SomeObject。 mapData()函数返回SomeObject。一旦满足一个条件,我想从循环中出来。由于找不到返回类型,我收到编译错误。你能指出我的病情吗?

 public static SomeObject mapper(List<String> mylist) {
    Iterator iter = mylist.iterator();
    while (iter.hasNext()) {
        Object[] result = (Object[]) iter.next();
            if (condition){
                //dosomething
                return mapData(abc);
            }else if (condition) {
                //dosomething
                return mapData(def);
            }else {
                //dosomething
                return mapData(ghi);
            }
    }
  // Get compilation error due to no return type at this position
}

3 个答案:

答案 0 :(得分:4)

想象一下当你的while循环从未执行时会发生什么?如果您的列表为空,则会发生这种情况。在这种情况下,您的方法不会返回任何内容,从而导致错误。

只需添加一个return语句:

return null;
while循环之后

。如果您尚未对此方法返回的值进行SomeObject检查,请返回null的默认实例。

答案 1 :(得分:3)

编译器要求所有可能的代码路径

  • return一个值
  • throw例外

你应该在程序的上下文中做任何更有意义的事情,在你的情况下,这意味着在你的方法的末尾添加其中一个语句。

答案 2 :(得分:0)

在最后添加return null;(或)相关return语句。

如果你的while循环中没有满足任何条件,那么这将被返回。