【问题标题】:Returning an Array in a Method在方法中返回数组
【发布时间】:2013-04-03 03:43:11
【问题描述】:

我有一个方法会返回一个 String[],这取决于之前的用户输入,它将确定参数是“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;

        }
    }

提前致谢!

【问题讨论】:

  • 如果 type 既不是 INTERNATIONAL 也不是 DOMESTIC 并且调用了您的方法会怎样?
  • @Muel 我以前没有看到这个问题,但我现在明白了,我修复了它。谢谢!

标签: java arrays methods parameters return


【解决方案1】:

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

例如type2 = "ALIEN"

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

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

【讨论】:

  • 我现在看到了问题!非常感谢:)
【解决方案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;
}

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        你应该有所有情况的 return 声明。所以声明字符串在 if else 之外飞行并动态初始化,最后返回为

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

        另外你应该避免声明同名的数据成员,

        【讨论】:

          猜你喜欢
          • 2015-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-12
          • 2013-12-15
          相关资源
          最近更新 更多