因为你的return count写在for循环里面了,这样的话函数就缺少返回语句,你在当前return语句的下面那个大括号后面加一个return 0;就可以。
LS没有自己编译啊……呵呵,count的声明在for里面,所以下移return没有用,还是加一个return 0或者把count声明在for外面比较靠谱
晕,楼主只会看1楼啊?我写的很清楚了啊
现在解决方案有两种
1、在for外面加一个return 0;或者别的有返回值即可。
2、将int count = -1;这句上移到for外面去,然后将return count放在大括号外即可。
我没有太明白所谓打印一年中的每一天的含义,但是如果你想count的作用域足够大,可以直接将其声明放在P63类中,即如下定义:
class P63
{
static int count = -1;
当然在函数中还需要重新赋值计算
还有问题直接和我在线交谈即可
呵呵,这个,你注意你countDays函数返回一个count值
但你return count语句放在了for循环里不是吗,而不是函数最后呀
把return count语句挪到下一个大括号后面
你要返回的就是count对吧,那在static int countDays ( int year){
下面加一句
int count=-1;
把原先的int count=-1;删掉~
试试看,加油哦~
你的返回语句写在了for循环里面,因为编译程序认为for循环里面可能一次都执行,所以会出现没有返回语句的错误。虽然你自己认为这个for循环肯定会执行,但它不这么想。
你可以把return语句提到循环外面,或返回一个其他值。
for 循环要是结束了,还要return一个的。你可以把int count = -1; 放在for 上面。这样 count 的作用域就大了
你是在做润年判断吧,你这样显示的错了,要记得每个方法有类型就有返回值,你定义的是返回整数类型的方法,所以要返回值,而且是对应的返回值。你不加for那么你在下面就不会多出个括号,那么return count是对的,但你加了个for循环,那么你的rutrun count就放在for循环括号的后面,但有一个问题就是人的定义变量问题,int count = -1; 应该放到for循环前面,代码如下就OK了:
package array;
public class P63{
public static void main(String[] arguments)
{
int yearIn=2007;
if (arguments.length>0)
yearIn=Integer.parseInt(arguments[0]);
}
static int countDays ( int year){
int count = -1;
for (int month=1;month<=12 ;month++ ) //这里加了循环条件
{
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
count =31;
break;
case 4:
case 6:
case 9:
case 11:
count =30;
break;
case 2:
if (year%4==0)
count =29;
else
count =28;
if ((year%100==0)&(year%400 !=0))
count =28;
}
}
return count;
} //缺少返回语句
}