这个简单JAVA程序错在哪里??

来源:百度知道 编辑:UC知道 时间:2024/05/31 16:06:03
这一个方法
public static int getDay(int year ,int month){
if(month==1||month==3||month==5)
return 31;
if(month==4||month==6)
return 30;
}

这个方法还没写全,主要就是要用这个方法返回一个月的天数
当month为1、3、5…………就返回31
我这样写应该对吧
可是为什么运行时出错
提示是“必须返回一个int类型的值”
返回的31 30 不就是int 类型吗???

public static int getDay(int year ,int month){
int i=0;
if(month==1||month==3||month==5)
return i=31;
if(month==4||month==6)
return i=30;
return i;
}
改为以上这样。原因是:
系统必须确保你有返回一个int值,而如果你将值放在if语句中的话,它会认为“如果if语句都不成立的话,那岂不是没有int值返回了?”,所以,这个情况是不允许的。
还是不明白的话问我^_^

其实程序的意思并不是说你返回的不是int型的值,看看你写的语句,两个if语句,程序会认为还有其他的可能,也就是说如果方法接受了一个月份为7,你要反回什么?程序是考虑到你的语句写的不严谨才报的错,把你的语句改成

public static int getDay(int year ,int month){
if(month==1||month==3||month==5)
return 31;
else if(month==4||month==6)
return 30;
else{
//处理语句
};
}

这样程序就认为你这个方法可以对于任何结果都有一个相对应的结果,就不会有问题了。

这样的
如果你输入的不是13546那么结果不就是什么也不返回了么。
改成
public static int getDay(int year ,int month){
if(month==1||month==3||month==5)
return 31;
if(month==4||month==6)
return 30;
else return 28;
}

以上代码应该是没问题,还是你在调用此方法时用来保存此方法的类型不是int型的

你的返回语句都放在了if语句中,如果if都不成立,不就没有返回值了,程