日历(Java实现)

您所在的位置:网站首页 java实现日历打印 日历(Java实现)

日历(Java实现)

2024-07-16 13:42| 来源: 网络整理| 查看: 265

Java打印日历 

https://baike.baidu.com/item/基姆拉尔森计算公式/713396?fr=aladdin

输出日历:

首先呢,先声明一个数组,动态赋值方式的给数组赋值,由于一个月最大为31天,所以数组的最大值a[a.length - 1]为31;

然后根据基姆拉尔森计算公式算出每个月的1号是星期几。判断平年闰年,不同的年分中2月的天数是不一样的。

具体代码

import java.util.Scanner; public class 日历{ // 调用Scanner类输入年和月份 static Scanner scanner = new Scanner(System.in); static int year = scanner.nextInt(); static int month = scanner.nextInt(); public static void main(String[] args){ int days = 0 ; /* 一个月最多有31天, * 首先声明一个月的天数存入一个数组中*/ int[] a = new int[31]; int b = 0; for(int i = 0; i < 31; i++) { a[i] = i + 1; } System.out.println(" 日 一 二 三 四 五 六 "); //输出星期几 switch(month){ case 1: day(a, b, 31); break; case 2: //由于有闰年和平年,他们的二月分别是不相同的 //所以要判断一下 if(year % 4 == 0 && year % 400 == 0 && year % 100 !=0) { day(a, b, 29); } else { day(a, b, 28); } break; case 3: day(a, b, 31); break; case 4: day(a, b, 30); break; case 5: day(a, b, 31); break; case 6: day(a, b, 30); break; case 7: day(a, b, 31); break; case 8: day(a, b, 31); break; case 9: day(a, b, 30); break; case 10: day(a, b, 31); break; case 11: day(a, b, 30); break; case 12: day(a, b, 31); break; } } //定义一个方法,再在case中调用,不然再case中写代码程序就太长了 public static void day(int[] a, int b, int c) { int week = 0; //要先判断每个月的1号是星期几, if(month ==1 || month ==2) { //这个和下面算week的式子是算每月1号是星期几的, //这个叫,啥子基姆拉尔森计算公式。 month +=12; year--; } week=(1+2*month +3*(month+1)/5+year+year/4-year/100+year/400+1)%7; //判断每个月1号是周几 for(int i = 0; i < 3 * week; i++) { System.out.print(" "); //想让具体某天呆在自己的星期几里里面 //给1号前面输入空格,找到自己的位置 } b = week; for (int e : a) { if(b % 7 == 0) { //每输出7个数,就换行 b = 0; System.out.println(); } if(e > c) { //如果大于每月最大的数跳出循环 break; } if(e < 10) { //这个就是为了美观了,可以尝试把这行注释掉, //看看效果 System.out.print(" "); } System.out.print(e + " "); //输出每月的天数 b++; } } } 输出结果为: 2020 2 日 一 二 三 四 五 六 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3