java打印日历

阅读 54

2022-01-05

打印日历

先获取用户输入的年和月

然后创建日历对象

把年和月添加到对象里面  再添加一个1   1为1号  

然后去判断用户输入月份的1号是星期几

是星期几就有几个空格

打印玩空格需要打印天数

天数是从第一天开始

所以for循环要从1开始 而不是0

1小于哟用户输入的月份的天数  

假如用户输入的是1月  则一月有31天   则1小于31添加条件

当每打印7个 日子之后就换换行

所以添加一个判断条件  

判断条件有很多种  (.............动动脑袋瓜自行添加吧)

详细的看代码中的解释吧

Calender是抽象类

为什么要打空格

因为不是所有的1号都是从周一开始         这个问题有点  .....

 

上菜

package main;

import javax.swing.plaf.synth.SynthOptionPaneUI;
import java.util.Calendar;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        /***
         * 王总输入部分
         */
        Scanner input = new Scanner(System.in);
        System.out.println("请输入年");
        int year = input.nextInt();
        System.out.println("请输入月");
        int month = input.nextInt()-1;


        /***
         * 新建对象部分
         */
        Calendar a = Calendar.getInstance();


        /***
         * 创建年月日部分
         */
        a.set(year,month,1);  //我在这里1号


        /**
         * 判断用户输入的月份的  1号  是周几
         * 是周几前面就有几个空
         */
        int say1 = a.get(Calendar.DAY_OF_WEEK)-1;
        System.out.println(year+"年");
        System.out.println("星期"+say1+"是一号");
        System.out.println("日\t一\t二\t三\t四\t五\t六\t");


        /***
         * 打印一号前面个空格
         */
        for (int i = 0;i<say1;i++){
            System.out.print("\t");
        }


        /**
         * 打印天数  因为月份开始是从第一天  所以i=1
         * i<用户输入月份的总天数+1   i++
         * 也可以这样写
         * i<=用户输入的总天数    i++
         */
        for (int i = 1;i<(a.getActualMaximum(Calendar.DAY_OF_MONTH)+1);i++){
            /**这里是当星期几变成周日的时候换行
             * 这里的逻辑是这样的
             * 今天是周六然后打印1号
             * 然后say1++变成了7
             * 然后打印回车并且清零say1
             * 0      1      2      3      4      5      6
             * 日     一     二     三     四      五     六
             * 在第二行打印2号*
             */
            if(say1 == 7){
                System.out.println();
                say1 = 0;
            }
            System.out.print(i+"\t");
            say1++;

        }
    }
}

运行结果

 

精彩评论(0)

0 0 举报