2013-04-11 4 views
0

У меня есть метод, который вернет строку [], в зависимости от предыдущего пользовательского ввода, который определит, является ли параметр «INTERNATIONAL» или «DOMESTIC». Независимо от того, оба входа должны привести к созданию двух разных строк []. Когда я пытаюсь скомпилировать, я получаю сообщение об ошибке «missing return statement». Как я могу это исправить?Возвращение массива в метод

Вот мой метод:

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; 

     } 
    } 

Заранее спасибо!

+0

Что произойдет, если тип не является ни INTERNATIONAL, ни DOMESTIC и ваш метод? – Muel

+0

@Muel Я не видел эту проблему раньше, но теперь я понимаю, и я ее исправил. Благодаря! – nichi

+0

Рад, что это имеет смысл! – Muel

ответ

4

Что произойдет, если ни одно из этих if-утверждений не будет истинным? Тогда ваш метод не имеет возвращаемого значения.

например. type2 = "ALIEN"

Возможно, в вашей программе есть логика, которая предотвращает это. Но компилятор Java этого не знает.

Быстрое и грязное исправление для этого - просто положить return null; в конце метода. «Лучшим» способом является использование исключений для незаконных аргументов.

+0

Я вижу проблему сейчас! Большое спасибо :) – nichi

0

Ваша проблема заключается в том, что у вас есть if и else if, но нет else. Java жалуется, что случай, когда type2 не совпадает ни с одним из двух заданных значений, не адресуется.

0

Ну компилятору нужен внешний оператор возврата для определения результатов возврата.

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; 
} 
+1

Спасибо большое :) – nichi

0

У вас должен быть оператор возврата для всех случаев. Так объявить строковых полеты из стороны, если еще и initailize dynmically, и, наконец, вернуться в

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

Кроме того, вы должны избегать декларирования элементов данных в том же имени,

Смежные вопросы