java - 有没有更好的方法来为 java 编写这段代码?还是让它更干净?

标签 java syntax methods if-statement

我将此代码作为项目的一部分编写,这似乎不是最有效的。有没有更简洁的方法来编写此方法?

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/

相关文章:

python - 逗号在增强列表分配中的用法是什么?

javascript - 如何在没有对象的情况下将对象方法作为参数传递

java - 存储 "180-bit"(超过 64 位)整数的有效方法

java - 使用 SharedPreferences 从永久存储的集合中以随机顺序获取数据

syntax - Kotlin中的函数式编程-分配函数

python - 当我们导入一个模块时,Python 中有一个方法吗?

c++ - 如何从另一个类访问函数?

java - Selenium 可移植 Chrome 打开 CMD

java - 数据连接上的 FTPSClient 套接字超时

java - 为什么允许 `enum of enum of enum..`?