Как получить java для применения выбора в високосный год? Правило каждые четыре года происходит с високосного года, начиная с 0. Логическое значение, которое я сделал, - leapYear = year% 4 == 0, но когда я вводил leapYear, например. 4, оператор if (в марте), при котором leapYear выводит пустые строки. Вот код:Выбор Java для календарного високосного года
public static void main(String[] args) {
// create a scanner
Scanner input = new Scanner(System.in);
//prompt user to enter year and first weekday
System.out.println("Enter a year");
int year = input.nextInt();
System.out.println("Enter first weekday of year e.g.: 0 for Sunday");
int weekDay = input.nextInt();
int i;
int jan = 31;
int feb = 28;
int mar = 31;
int apr = 30;
int may = 31;
int jun = 30;
int jul = 31;
int aug = 31;
int sep = 30;
int oct = 31;
int nov = 30;
int dec = 31;
// leap year
boolean leapYear = year % 4 == 0;
if (leapYear) feb += 1;
System.out.println("January " + year);
System.out.println("________________________________");
System.out.println(" Sun Mon Tue Wed Thu Fri Sat");
if (weekDay == 1) System.out.printf("%4s", " ");
if (weekDay == 2) System.out.printf("%8s", " ");
if (weekDay == 3) System.out.printf("%12s", " ");
if (weekDay == 4) System.out.printf("%16s", " ");
if (weekDay == 5) System.out.printf("%20s", " ");
if (weekDay == 6) System.out.printf("%24s", " ");
for (i = 1; i <= jan; i++) {
System.out.printf("%4d", i);
if (weekDay == 0 && i % 7 == 0) System.out.println("\n");
if (weekDay == 1 && (i == 6 || i == 13 || i == 20 || i == 27)) System.out.println("\n");
if (weekDay == 2 && (i == 5 || i == 12 || i == 19 || i == 26)) System.out.println("\n");
if (weekDay == 3 && (i == 4 || i == 11 || i == 18 || i == 25)) System.out.println("\n");
if (weekDay == 4 && (i == 3 || i == 10 || i == 17 || i == 24)) System.out.println("\n");
if (weekDay == 5 && (i == 2 || i == 9 || i == 16 || i == 23 || i == 30)) System.out.println("\n");
if (weekDay == 6 && (i == 1 || i == 8 || i == 15 || i == 22 || i == 29)) System.out.println("\n");
}
System.out.println("\n");
System.out.println("February " + year);
System.out.println("________________________________");
System.out.println(" Sun Mon Tue Wed Thu Fri Sat");
if (weekDay == 0) System.out.printf("%12s", " ");
if (weekDay == 1) System.out.printf("%16s", " ");
if (weekDay == 2) System.out.printf("%20s", " ");
if (weekDay == 3) System.out.printf("%24s", " ");
if (weekDay == 5) System.out.printf("%4s", " ");
if (weekDay == 6) System.out.printf("%8s", " ");
for (i = 1; i <= feb; i++) {
System.out.printf("%4d", i);
if (weekDay == 0 && (i == 4 || i == 11 || i == 18 || i == 25)) System.out.println("\n");
if (weekDay == 1 && (i == 3 || i == 10 || i == 17 || i == 24)) System.out.println("\n");
if (weekDay == 2 && (i == 2 || i == 9 || i == 16 || i == 23)) System.out.println("\n");
if (weekDay == 3 && (i == 1 || i == 8 || i == 15 || i == 22)) System.out.println("\n");
if (weekDay == 4 && i % 7 == 0) System.out.println("\n");
if (weekDay == 5 && (i == 6 || i == 13 || i == 20 || i == 27)) System.out.println("\n");
if (weekDay == 6 && (i == 5 || i == 12 || i == 19 || i == 26)) System.out.println("\n");
}
System.out.println("\n");
System.out.println("March " + year);
System.out.println("________________________________");
System.out.println(" Sun Mon Tue Wed Thu Fri Sat");
if (leapYear) {
if (weekDay == 0) System.out.printf("%4s", " ");
if (weekDay == 1) System.out.printf("%8s", " ");
if (weekDay == 2) System.out.printf("%12s", " ");
if (weekDay == 3) System.out.printf("%16s", " ");
if (weekDay == 5) System.out.printf("%20s", " ");
if (weekDay == 6) System.out.printf("%24s", " ");
for (i = 1; i <= mar; i++) {
if (weekDay == 6 && (i == 4 || i == 11 || i == 18 || i == 25)) System.out.println("\n");
if (weekDay == 0 && (i == 3 || i == 10 || i == 17 || i == 24)) System.out.println("\n");
if (weekDay == 1 &&(i == 2 || i == 9 || i == 16 || i == 23 || i == 30)) System.out.println("\n");
if (weekDay == 2 &&(i == 1 || i == 8 || i == 15 || i == 22 || i == 29)) System.out.println("\n");
if (weekDay == 3 && i % 7 == 0) System.out.println("\n");
if (weekDay == 4 && (i == 6 || i == 13 || i == 20 || i == 27)) System.out.println("\n");
if (weekDay == 5 && (i == 5 || i == 12 || i == 19 || i == 26)) System.out.println("\n");
}
}
else {
if (weekDay == 0) System.out.printf("%12s", " ");
if (weekDay == 1) System.out.printf("%16s", " ");
if (weekDay == 2) System.out.printf("%20s", " ");
if (weekDay == 3) System.out.printf("%24s", " ");
if (weekDay == 5) System.out.printf("%4s", " ");
if (weekDay == 6) System.out.printf("%8s", " ");
for (i = 1; i <= mar; i++) {
System.out.printf("%4d", i);
if (weekDay == 0 && (i == 4 || i == 11 || i == 18 || i == 25)) System.out.println("\n");
if (weekDay == 1 && (i == 3 || i == 10 || i == 17 || i == 24)) System.out.println("\n");
if (weekDay == 2 && (i == 2 || i == 9 || i == 16 || i == 23 || i == 30)) System.out.println("\n");
if (weekDay == 3 && (i == 1 || i == 8 || i == 15 || i == 22 || i == 29)) System.out.println("\n");
if (weekDay == 4 && i % 7 == 0) System.out.println("\n");
if (weekDay == 5 && (i == 6 || i == 13 || i == 20 || i == 27)) System.out.println("\n");
if (weekDay == 6 && (i == 5 || i == 12 || i == 19 || i == 26)) System.out.println("\n");
}
}
Какова значимость всего этого кода? –
Напишите программу, которая предложит пользователю ввести год и в первый день года и отобразит таблицу календаря за год на консоли. – JavaLearner
, так что это не должно быть «настоящими» датами, если вы говорите, что 2015 год и первый день - воскресенье, тогда это нормально? – Michael