2013-11-24 7 views
1

Я пытаюсь создать функцию на Java, которая проверяет дни в месяцах с 1582 по 2199. Событие, если у меня есть операторы return типа int, я получаю следующую ошибку: этот метод должен возвращаться результат типа междунарЭтот метод должен возвращать результат типа int

Смотрите мой образец кода:

/------------------------- DAYSINMONTH --- -------------------/

public static int daysInMonth(int year, int month) 

{ 

    //returns the number of days in month of year, or -1 if date is invalid. 
    //October 1582 has 16 days (16th-31st) 

    if (year < 1582 || year > 2199) 

     return -1; 


    else if(month == 1 || month ==3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) 

     return 31; 





} 

ответ

0

Вы забыли закончить if-else с футляром else.

+0

спасибо .. я вижу сейчас .. – user3001818

1

Существует комбинация параметров, когда в вашем методе нет возврата. Javac достаточно умен, чтобы заметить это, и он не будет компилировать такой код, поскольку он может привести к неожиданному поведению.

0

Вы также должны написать случай, если ни одно из двух условий не соответствует. Поэтому лучше напишите футляр для else после else if.

0

И что должно произойти, если ни одно из условий не будет выполнено?

Я хотел бы предложить что-то вроде этого

int ret = 0; 
if (year < 1582 || year > 2199) 
    ret = -1; 


else if(month == 1 || month ==3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) 

    ret = 31; 

return ret; 
+0

Большое спасибо – user3001818

1

События, если у меня есть возвращаемое значение целого типа я получаю следующее сообщение об ошибке: Этот метод должен возвращать результат типа междунара

Да вы возвращаете int, хотя если все утверждения являются ложными. Если мы сделаем что-то вроде daysInMonth(1000, 100);, тогда программа запуталась, потому что она заканчивается в точке, где ничего не вернуть.

Просто добавьте else после else if или просто добавьте return в конце метода.

public static int daysInMonth(int year, int month) 
{ 
    //returns the number of days in month of year, or -1 if date is invalid. 
    //October 1582 has 16 days (16th-31st) 

    if (year < 1582 || year > 2199) 
     return -1; 
    else if(month == 1 || month ==3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) 
     return 31; 

    return -1; 
} 
+2

Большое спасибо Vallentin ... теперь я понимаю – user3001818

0

Вы должны добавить эти строки

else if(month==2) 
      { 
      if( year%4==0 ) 
       return 29; 
      else 
       return 28; 
      } 


else if(month==4|| month==6|| month==9||    month==11) 
    return 30; 

return -1; 
Смежные вопросы