java - 我的方法没有给我正确的数组维度?

标签 java arrays multidimensional-array io leap-year

首先,我很抱歉我的英语不好。我制作了自己的日历程序。我刚刚收到 1 个问题。它不检查正确的闰年。

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;
        }

检查闰年的代码。

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.
            }
        }

我希望你能找到问题,因为对我来说,这段代码看起来非常干净。而且我没有找出问题所在。

输出让我很困惑。如果我在输入中输入闰年,我会得到 2 月 28 天。 (必须是arraylist的1而不是0)

现在这让我很困惑如果我输入的不是闰年,我会得到 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++)

关于java - 我的方法没有给我正确的数组维度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43777721/

相关文章:

java - Bluemix Maven Spring Boot 构建和部署无效的目标版本

android - 为什么列表首选项中的条目没有显示在应用程序中?

java - 在微调器中隐藏字符串数组值

Java:什么是基于索引的数组访问,为什么它们很快?

php - MySQL查询到多维

php - 通过在多维数组中搜索标题返回值

java - 如何在Eclipse中调试java包的值?

Java 进程将自身发送到后台

java - 如何制作 jar 文件以在运行时加载图像

arrays - 多数组的笛卡尔积