參考 - P102~P103
1. 目標
生成一個日歷,格式如下圖所示。
ps: 當前的天數需要標記為*
2. 核心
對日歷的變量
import java.time.*;
public class CalendarTest{public static void main(String[] args) {LocalDate date = LocalDate.now(); // 獲取當前日期int month = date.getMonthValue(); // 獲取當前月份int today = date.getDayOfMonth(); // 獲取當前的天數date = date.minusDays(today - 1); // 將當前日期設置為月初while(date.getMonthValue() == month) { // 只要是當月就輸出,否則跳出循環System.out.printf("%3d", date.getDayOfMonth());date = date.plusDays(1);}}
}
3. 實現
在核心部分實現了日歷的循環打印,接下來只需要補全表頭、當前日期和換行即可.
import java.time.*;public class CalendarTest{public static void main(String[] args) {LocalDate date = LocalDate.now();int month = date.getMonthValue();int today = date.getDayOfMonth();date = date.minusDays(today - 1); // 設置為本月的開頭DayOfWeek weekday = date.getDayOfWeek(); // 獲取星期幾int value = weekday.getValue(); // 將星期幾兌換成對應的數字System.out.println("Mon Tue Wed Thu Fri Sat Sun"); // 日歷頭for(int i = 1; i < value; i++) { // 打印對應的空格System.out.print(" ");}while(date.getMonthValue() == month) {System.out.printf("%3d", date.getDayOfMonth()); // 獲取當前多少號if(date.getDayOfMonth() == today) {System.out.print("*");} else {System.out.print(" ");}date = date.plusDays(1);if(date.getDayOfWeek().getValue() == 1){System.out.println();}}if (date.getDayOfWeek().getValue() != 1) System.out.println();}
}