我将此代码作为项目的一部分编写,这似乎不是最有效的。有没有更简洁的方法来编写此方法?
public static int numberMonth(int parseMonth, Boolean leapYear)
{
int month = 0;
if (parseMonth < 1)
{ month = 0;
if (parseMonth < 2)
{ month =+ 31;
if (parseMonth < 3)
{
if (leapYear)
{
month =+ 29;
}
else if(!(leapYear))
{
month=+28;
if (parseMonth < 4)
{
month =+ 30;
if (parseMonth < 5)
{
month =+ 31;
if (parseMonth < 6)
{
month =+ 31;
if (parseMonth < 7)
{
month =+ 30;
if (parseMonth < 8)
{
month =+ 31;
if (parseMonth < 9)
{
month =+ 31;
if (parseMonth < 10)
{
month =+ 30;
if (parseMonth < 11)
{
month =+ 31;
if (parseMonth < 12)
{
month =+31;
}
}
}
}
}
}
}
}
}
}
}
}
}
最佳答案
您的原始代码有很多问题。它不返回值(您显然打算返回 month
,但编译器不知道。它不会到达您想要的任何代码。还有其他问题,虽然它们不会阻止您的代码正常工作,但它们会阻止任何人理解它。parseMonth
是什么意思?leapYear
是什么意思?为什么一个变量可以称为month
包含的值远远大于一年中的月数?没有任何评论可以解释这些。
如果我正在编写此函数,我会编写以下内容(基于 AndyMac 的代码并稍作修改):
public static int numberOfDaysBeforeMonth(int monthNumber, boolean leapYear)
{
//if monthNumber is out of range, return -1
if(monthNumber< 1 || monthNumber > 12)
return -1;
int[] daysPerMonth= {31,28,31,30,31,30,31,31,30,31,30,31};
int numberOfDays = 0;
//add up the days in the months preceding the month in question
for (int month = 1; month < monthNumber; month++)
numberOfDays += daysPerMonth[month - 1];
//add an extra day if it was a leap year and the month is after February
if (leapYear && monthNumber > 2)
numberOfDays++;
return numberOfDays;
}
关于java - 有没有更好的方法来为 java 编写这段代码?还是让它更干净?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5443693/