有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java返回while和if-else循环

我有下面的方法,它期望返回类型为SomeObject。函数的作用是:返回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) 个答案

  1. # 1 楼答案

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

    只需添加一个return语句:

    return null;
    

    while循环之后。或者返回SomeObject的某个默认实例,如果您尚未对该方法返回的值进行null检查

  2. # 2 楼答案

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

    • return一个值
    • throw一个例外

    在您的程序上下文中,您应该做任何更有意义的事情,在您的情况下,这意味着将这些语句中的一条添加到方法的末尾

  3. # 3 楼答案

    在末尾添加return null;(或)相关的return语句

    如果while循环中没有满足任何条件,则将返回该条件