此方法必须返回int类型的结果

时间:2013-11-24 07:58:11

标签: java function return

我尝试在Java中创建一个函数,用于检查从1582年到2199年的几天。如果我有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;





}   

6 个答案:

答案 0 :(得分:1)

在方法中没有调用返回时,有一组参数。 Javac足够聪明地注意到它并且它不会编译这样的代码,因为它可能导致意外的行为

答案 1 :(得分:1)

  

如果我有int类型的返回语句,则会出现以下错误:此方法必须返回int类型的结果

是的,你确实返回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 :(得分:0)

您忘记以[{1}}案例结束if-else声明。

答案 3 :(得分:0)

如果这两个条件都不相符,你也应该写一个案例。因此,最好在else之后为else if写一个案例。

答案 4 :(得分: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;

答案 5 :(得分: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;