简单的控制台输出日历(3)

该程序使用Java Swing和Calendar类实现了一个控制台界面的日历查询功能。用户可以输入年份和月份,程序将显示指定月份的完整日历,包括星期布局和日期。程序首先计算出指定月份1号是星期几,然后填充当月日期,最后完成日历的打印展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package Zking.Swing控制台日历;

import java.util.Calendar;
import java.util.Scanner;

public class 控制台日历s3 {
	public static void main(String[] args) {
		// 打印日历星期栏
		Scanner s1 = new Scanner(System.in);
		while (true) {
			System.out.println("=====================欢迎来到万年历=========================");
			System.out.println("请输入你想查询的年份:(例如:2022)");
			int i1 = s1.nextInt();

			System.out.println("请输入你想查询的月份:(例如:4)");
			int i2 = s1.nextInt();
			System.out.println("===========查询" + i1 + "年" + i2 + "月的万年历如下=========================");
			int year = i1;
			int month = i2;

			int[] nums = new int[42];
			int Index = 0;

			System.out.println("一\t二\t三\t四\t五\t六\t日");

			// 获取当前时间,得出这个月1号是星期几
			Calendar c1 = Calendar.getInstance();
			c1.set(year, month - 1, 1);
			int week = c1.get(Calendar.DAY_OF_WEEK) - 1;
//		System.out.println("week:" + week);
			week = (week == 0) ? 7 : week;// 星期日等于1

			Calendar c2 = Calendar.getInstance();
			c2.set(year, month - 1, 1);
			c2.add(Calendar.MONTH, -1);
			int c2Date = c1.getActualMaximum(Calendar.DAY_OF_MONTH) - week + 2;

			for (int i = 1; i < week; i++) {
				nums[Index++] = c2Date++;
//			System.out.print("**\t");
//			System.out.print(c2Date++ + "\t");
			}
			int day = c1.getActualMaximum(Calendar.DAY_OF_MONTH);
			for (int i = 1; i <= day; i++) {
				nums[Index++] = i;
//			System.out.print(i + "\t");
//			if ((week + i - 1) % 7 == 0) {
//				System.out.println();
//			}
			}
			int nextDate = nums.length - Index;
			for (int i = 1; i <= nextDate; i++) {
				nums[Index++] = i;

			}
			for (int i = 0; i < nums.length; i++) {
				System.out.print(nums[i] + "\t");
				if ((i + 1) % 7 == 0) {
					System.out.println();

				}

			}
			System.out.println("=========================================================");
			System.out.println();

		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值