一个简单的java题无法运行.请高手指教.

来源:百度知道 编辑:UC知道 时间:2024/05/22 01:30:44
此题是:编写一个程序判断某年(y)某月(m)有多少天?
我编写如下:class b{
public static int Method(int y,int m){

int d=0;

/*判断是否是二月。*/
/*不是进行其他月份的天数*/

while(m!=2&&m<=12&&m>0)

{
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
d=31;
}
else d=30;
}

/*是二月考虑是否是闰年*/
while(m==2&&m<=12&&m>0)
{
if((y%4==0||y%100==0)&&y%400!=0)
{
d=29;
}
else d=28;
}

return d;
}//返回d值。

public static void main(String args[]){

int f=Method(2008,2);

System.out.println("天数是"+f);
}
}
此题可以编译.但是无法运行(我猜是死循环了).请教哪里有冲突.为什么有冲突.应该怎么改.谢谢.
哈哈.我是新手.对诸位的批评和指点都欣然接受.但我不知道能把分同时分给二位不。所以我先采纳wjt9989.原因是他的批评确实是正确的。如若能同时采纳2人.我也同样会采纳pjfigo.我也感谢您的指导.最后仍要感谢为我解答的每一个人.谢谢.

哥们,不得不说你写的代码很垃圾呀。
先说问题所在。

while(m==2&&m<=12&&m>0) //你传的m=2的时候,这个循环就不能跳出去了,就是死循环。
{
if((y%4==0||y%100==0)&&y%400!=0) // 闰年是这么判断的吗?
{
d=29;
}
else d=28;
}
//还有,既然m==2 都是true了,你再判断m<=12&&m>0 还有什么意义?

给你个优化的代码:

public static int hownamydays(int y, int m)
{
int[] days = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0))
{
days[1] = 29;
}
return days[m - 1];
}

public static int Method(int y,int m){

int d=0;

/*判断是否是二月。*/
/*不是进行其他月份的天数*/

while(m!=2&&m<=12&&m>0)

{
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
{
d=31;
}
else d=30;
/*付值完成后,没有结束 while循环!*/
}

/*是二月考虑是否是闰年*/
while(m==2&&m<=12&&m>0)
{
if((y%4==0||y%100==0)&&y%400!=0)
{
d=29;