題目:
使用Calendar完成一個萬年曆,鍵盤輸入一個年份和月份,控制檯輸出當月的日曆。
編碼思路:
打印當年當月的日曆,需要確定兩點:
- 這個月的天數;
- 第一天是星期幾。第一天之前打印空白,每行爲7個數字,7的倍數換行。
代碼如下:
public class Demo5 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("輸入year:");
int year = input.nextInt();
System.out.println("輸入month:");
int month = input.nextInt();
//得到一個Calendar對象
Calendar c = Calendar.getInstance();
//將輸入的年和月設置到Calendar對象,月減一,日爲每月第一天,比如2019-12-1
c.set(year, month-1, 1);
//得到每月實際最大天數
int dayOfMonth = c.getActualMaximum(Calendar.DAY_OF_MONTH);
//得到每月第一天是星期幾,1爲星期日,2爲星期一
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
System.out.println("日\t一\t二\t三\t四\t五\t六");
//將第一天前的星期打印製表符
for (int j = 1; j < dayOfWeek; j++) {
System.out.print("\t");
}
//打印每一天
for (int k = 0; k < dayOfMonth; k++) {
System.out.print(k+1+"\t");
//7的倍數就換行
if((dayOfWeek+k)%7==0){
System.out.println();
}
}
}
}