[Java核心技术(卷I)] - 简易的日历

参考 - 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();
    }
}

猜你喜欢

转载自blog.csdn.net/piano9425/article/details/109713532
今日推荐