Java 编写万年历

万年历

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public static void main(String args[]) throws Exception { 
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入年份");
	int year = sc.nextInt();
	System.out.println("请输入月份");
	int month = sc.nextInt();
	System.out.println("\t\t\t" + year +"年" + month + "月");
	System.out.println("***********************************************");
	for (int i = 0; i < 7; i++) { 
		if (i == 0) { 
			System.out.print("星期日\t");
		 } else { 
		 	System.out.print("星期" + i + "\t");
		 	}
	}
	// 换行
	System.out.println();
	String time = year + "/" month;
	SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-M");
	Date date = dateFormat.parse(time);
	Calendar calendar = Calendar.getInstance();
	calendar.setTime(date);
	// 获取输入年份月份是星期几
	int day = calendar.get(Calendar.DAY_OF_WEEK);
	// 获取输入月份的天数
	int  month_of_day = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
	for(int i=0; i<42; i++) { 
		// 从哪里开始打印
		if(i < (day-1) ) { 
			System.out.print("\t");
		} else { 
			System.out.print( (i-day+2)+"\t");
			if(i == (day + month_of_day - 2 )) { 
				break;
			}
		}
		if((i+1) % 7 == 0) { 
			System.out.println();
		}
	}
}
### Java实现万年历的代码示例 以下是一个完整的Java万年历实现代码,综合了日历功能、闰年判断以及用户输入交互等功能[^1]。 ```java package calendar; import java.util.Calendar; import java.util.Scanner; public class RiLi { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入年份:"); int year = scanner.nextInt(); System.out.println("请输入月份:"); int month = scanner.nextInt(); // 打印指定年月的日历 printCalendar(year, month); } private static void printCalendar(int year, int month) { Calendar calendar = Calendar.getInstance(); calendar.set(year, month - 1, 1); // 设置为指定年月的第一天 // 获取当月第一天是星期几 int firstDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); // 获取当月的天数 int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); // 打印表头 System.out.println("日\t一\t二\t三\t四\t五\t六"); System.out.println("----------------------------"); // 打印空格以对齐日期 for (int i = 1; i < firstDayOfWeek; i++) { System.out.print("\t"); } // 打印日期 for (int day = 1; day <= daysInMonth; day++) { System.out.print(day + "\t"); if ((day + firstDayOfWeek - 1) % 7 == 0) { // 每行七个日期 System.out.println(); } } System.out.println(); } } ``` 此代码通过`Calendar`类实现了日历的基本功能,包括打印指定年月的日历,并正确显示每周的排列方式。同时,结合用户输入,可以动态生成不同年份和月份的日历内容[^2]。 此外,为了支持闰年的判断,可以使用如下方法进行扩展: ```java public static boolean isLeapYear(int year) { if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { return true; } else { return false; } } ``` 该方法能够准确判断某一年是否为闰年[^3]。 如果需要进一步扩展功能,例如导出节假日信息或计算特定日期的星期几,可以参考`HolidaysService`类的相关实现[^4]。 ### 注意事项 - 确保在运行程序时输入正确的年份和月份。 - 如果需要处理更多复杂的日期逻辑,可以结合`SimpleDateFormat`类解析字符串日期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值