У меня скоро появится проект. Мы должны написать программу, которая запрашивает год и распечатывает календарь. Мы можем использовать только один, один для одного и один цикл переключателя. (и нет массивов!). Мне трудно понять, как распечатывать дни каждого месяца, начиная с первого дня первой недели, так как большинство месяцев не начнется в воскресенье.Программа Java Calendar
import java.util.*;
import java.util.Calendar;
class Lab2 {
public static void main(String[] args) {
Scanner user = new Scanner(System.in);
System.out.print("What year do you want to view? ");
int year = user.nextInt();
System.out.printf("%12d\n", year);
System.out.println();
boolean leap = isLeap(year);
int firstDay = JulianDate(year);
monthLoop(year, firstDay, leap);
}
public static boolean isLeap(int year) {
boolean verdict = false;
if (year % 100 == 0 && year % 400 == 0) {
verdict = true;
}
if(year % 100 != 0 && year % 4 == 0) {
verdict = true;
}
return verdict;
}
public static int JulianDate(int year) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.DAY_OF_YEAR, 1);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
return dayOfWeek;
}
public static void monthLoop(int year, int firstDay, boolean leap) {
for(int i=1; i <= 12; i++) {
switch (i) {
case 1: System.out.printf("%13s\n", "January");
break;
case 2: System.out.printf("%13s\n", "February");
break;
case 3: System.out.printf("%12s\n", "March");
break;
case 4: System.out.printf("%12s\n", "April");
break;
case 5: System.out.printf("%11s\n", "May");
break;
case 6: System.out.printf("%11s\n", "June");
break;
case 7: System.out.printf("%11s\n", "July");
break;
case 8: System.out.printf("%13s\n", "August");
break;
case 9: System.out.printf("%14s\n", "September");
break;
case 10: System.out.printf("%13s\n", "October");
break;
case 11: System.out.printf("%14s\n", "November");
break;
case 12: System.out.printf("%14s\n", "December");
break;
}
System.out.println("S M Tu W Th F S");
}
}
}
Кажется, вам разрешено использовать «Календарь» на основе вашего код, который должен иметь много всего для вас, включая имена месяца и дня, и интерес к високовому году ... Познакомьтесь с тем, что класс будет делать для вас, - очень вероятно, что вы можете просто продолжать увеличивать день в вашем основном цикле. – Krease
'import java.util.calendar;' java имеет встроенный класс календаря, который имеет метод для високосных лет, дней, всего. Вы можете расширить класс от своего – ChriskOlson