0

我有一个方法会返回一个字符串 [],这取决于以前的用户输入,它将确定参数是“INTERNATIONAL”还是“DOMESTIC”。无论如何,两个输入都应该导致创建两个不同的 String[]。但是,当我尝试编译时,我收到“缺少返回语句”错误消息。我怎样才能解决这个问题?

这是我的方法:

   public String[] typeflight(String type)
     { 
        String type2= type.toUpperCase();
        if (type2.equals("INTERNATIONAL"))
        {
            String[] flights = {"B738 to Melbourne, Australia ", "A380 to Beijing, China ", "F348 to London, England ", "M225 to Ontario, Canada",
                    "E987 to Tokyo, Japan ", "T451 to Copenhagen, Denmark ", "S501 to Seoul, South Korea ", "N778 to Venice, Italy ",
                    "B621 to Mexico City, Mexico ", "L454 to Rabat, Morocco ", "C998 to San Jose, Costa Rica", "H859 to Amsterdam, Netherlands "};
            return flights;

        }
        else
        if(type2.equals("DOMESTIC"))
        {   
            String[] flights = {"459 to Seattle, Washington ", "662 to Los Angeles, California ", "712 to New Orleans, Louisiana ", "285 to Chicago, Illinois ",
                    "896 to Honolulu, Hawaii ", "476 to Boston, Massachusetts ", "823 to Newark, New Jersey ", "902 to Miami, Florida ",
                    "353 to Fort Wayne, Indiana ", "112 to Des Moines, Iowa ", "", "294 to Las Vegas, Nevada"};
            return flights;

        }
    }

提前致谢!

4

5 回答 5

4

如果这些 if 语句都不是真的会发生什么?那么你的方法没有返回值。

例如type2 = "ALIEN"

也许您的程序中有逻辑可以防止这种情况发生。但是 Java 编译器不知道这一点。

一个快速而肮脏的解决return null;方法是在方法的末尾放一个。“更好”的方法是对非法参数使用异常。

于 2013-04-11T03:50:34.383 回答
2

如果两个if条件都失败,则函数不会返回任何内容。因此return null,如果两个条件都不匹配。

public String[] typeflight(String type)
 { 
    String type2= type.toUpperCase();
    if (type2.equals("INTERNATIONAL"))
    {
        // Code
        return flights;

    }
    else
    if(type2.equals("DOMESTIC"))
    {   
        // Code 
        return flights;

    }

    return null;
}
于 2013-04-11T03:52:25.483 回答
0

你的问题是你有一个ifand else if,但没有else。Java 抱怨type2不等于两个给定值中的任何一个的情况没有得到解决。

于 2013-04-11T03:51:03.020 回答
0

那么编译器需要一个外部的“返回语句”来确定返回结果。

于 2013-04-11T03:51:51.957 回答
0

您应该有所有情况的 return 语句。因此,在 if else 之外声明 String 飞行并动态初始化,最后返回为

 public String[] typeflight(String type)
    {
    String[] flights;
         if(condition1){
           flights  = ....
           }
         else{
            flights = .....   
      }
          return flights;
    }

此外,您应该避免以相同名称声明数据成员,

于 2013-04-11T03:54:30.537 回答