打印日历
先获取用户输入的年和月
然后创建日历对象
把年和月添加到对象里面 再添加一个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++;
}
}
}
运行结果