首先,抱歉我的英语不好。我有自己的日历程序。我刚收到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++)