我尝试在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;
}
答案 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;