首先,抱歉我的英语不好。我有自己的日历程序。我刚收到1期。它不检查正确的leap年。

private final int[][] sizeOfMonth= {
            {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
            {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};


多数民众赞成在我的投入。

public int yearInput(String text){
    String yearNumber = "";
    boolean again = true;
    while (again) {
        System.out.print(text);
        again = false;
        try {
            yearNumber = erfasseText();
            int laenge = String.valueOf(yearNumber).length();

            if (laenge != 4) {
                again = true;
                throw new Exception();
            }
        } catch (Exception e) {
            this.output.yearWrongInput();
        }
    }
    int converter = Integer.parseInt(jahresZahl);
    return converter;

}


这是一个不同的类。

public int readYear() {
            output.yearQuery();
            int year = this.input.yearInput("Year: ");
            return year;
        }


check年体检代码。

public int getSizeOfMonth(int year, int month) {
        return this.sizeOfMonth[kalenderFunction.leapYear(year)][month];

    }


我无法在下面更改此代码,因为我的教授告诉过我。

boolean isLeapYear(int year) {
            return ((year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0)));
        }

       // 1 = true it is a leap year
       // 2 = false it is not a leap year
        int leapYear(int year) {
            if (isLeapYear(year)) return 1;
            else return 0;
        }


最后一个是输出部分的缩短代码。

int monthSize= getSizeOfMonth(year, month);
for (int day= 1; day< monthSize; day++) {

            System.out.print(getTwoLetters(day) + "\t");
            if (weekdayInYear == 6) {
                System.out.println();
              // I know the weekdayInYear is not be initialized. thats just for next line.
            }
        }


我希望您能找到问题,因为对我来说,这段代码看起来很干净。而且我没有发现问题。

输出使我感到困惑。如果我在输入中输入a年,我将获得2月的28天。 (它必须是arraylist的1而不是0)

现在,这让我感到困惑。如果我键入的不是a年,我将有27天的时间。 (为什么27)在数组中没有27的元素

*******************Febuary 2017*******************
Mo  Tue We  Thu Fr  Sa  Su
        01  02  03  04  05
06  07  08  09  10  11  12
13  14  15  16  17  18  19
20  21  22  23  24  25  26
27


我真的希望您能帮助我。我最后的希望
最好的祝福,
面膜蛋白

最佳答案

您的问题在以下循环范围内:

for (int day = 1; day < monthSize; day++)


您正在跳过该月的最后一天。

它应该是:

for (int day = 1; day <= monthSize; day++)

09-11 18:32
查看更多