java打印日历

阅读 50

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 举报