Java是一门可以跨平台,面向对象的编程语言,本文利用Java的一些基础知识来打印出万年历。
准备条件
首先准备IDEA,它是Java语言开发的集成环境,如果有需要的话可以留言或私信哦
其次是需要了解到的常识性知识:a.1900年是平年;b.1900.1.1是星期一;c.一个月:3月2日——4月1日是满一个月。
代码讲解
(1) 把自己所想要年、月的输出部分打印出来
public class Calendar {
public static void main(String[] args) {//创建程序入口/程序运行的入口
System.out.println("请输入4位的年份:");//输出语句年和月
Scanner zhangsan=new Scanner(System.in);//Scanner定义对象
int year=zhangsan.nextInt(); //把对象复制给年和月
System.out.println("请输入月份:");
int month=zhangsan.nextInt();
System.out.println(year+"年"+month+"月\t\t\t< >");
(2)根据输入的月份, 获得该月份对应的天数
int monthdays=0; //定义当前月份的总天数;
if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){
System.out.println("31天"); //1,3,5,7,8,10,12月有31天;
monthdays=31;
}else if (month==4 || month==6 || month==9 || month==11){
System.out.println("30天"); //4,6,9,11月有30天;
monthdays=30;
}else {
if (year%4==0 && year%100!=0 || year%400==0){
System.out.println("29天"); //能被4整除但不能被100整除或能被400整除的有29天;
monthdays=29;
}else {
System.out.println("28天");
monthdays=28; //其他的就是28天;
}
}
(3)计算距离1900年1月1号到输入年份上一年的总天数
int sumYear=0; //定义一个总年数
for (int i=1900;i<year;i++){ //for循环
if (i%4==0 && i%100!=0 || i%400==0){
sumYear+=366; //判断平年闰年
}else {
sumYear+=365;
}
}
(4)
计算输入月份的上一个月到所输入年份的1月1号的总天数
int sumMonth=0; //定义当前年的总月份
for (int i=1;i<month;i++){ //for循环定义
if (i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12){
sumMonth+=31;
}else if (i==4 || i==6 || i==9 || i==11){
sumMonth+=30;
}else {
if (year%4==0 && year%100!=0 || year%400==0){
sumMonth+=29;
}else {
sumMonth+=28;
}
}
}
(5) 求输入年、月的1月1号是星期几
int week = (sumYear+sumMonth+1)%7;
(6)开始打印日历
System.out.println("一\t二\t三\t四\t五\t六\t日\t"); //打印日历
for (int i=1;i<=week-1;i++){ //打印1号前的空格,空格数是1号所在星期几减1
System.out.print("\t");
}
for (int i=1;i<=monthdays;i++){ //打印日历
System.out.print(i+ "\t");
if ((sumYear+sumMonth+i)%7==0){ //如果到周日应该换行
System.out.println();
}
}
}
}
效果预览
可以随意输入你想要输入的年份和月份,我们拿2024年3月来运行一下 ,就会得到一个万年历。
总结
打印万年历并不难,了解并熟练即可。
不断学习,才能跟得上时代的脚步!