java控制台中打印万年历

package test;

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

public class MyDate {
	static Scanner sc = new Scanner(System.in);
	int year;
	int month;
	boolean islearyear;
	int days;
	int isweekday;
	boolean start = true;

	public static void main(String[] args) {
		new MyDate().run();
	}

	public void run() {
		while (start) {

			System.out.println("1.查询日历            2.退出");
			String s = sc.next();
			if (s.equals("1")) {
				System.out.println("");
				System.out.println("请输入年份");
				year = sc.nextInt();
				System.out.println("请输入月份");
				month = sc.nextInt();

				islearyear = isLeapYear(year);
				days = getMonthDay(month);
				isweekday = isweekday();
				System.out.println("日\t一\t二\t三\t四\t五\t六");
				// 换行的标志
				int sigln = 0;
				// 打印空格
				for (int j = 0; j < isweekday; j++) {
					if (isweekday == 7)
						return;
					System.out.print("\t");
					sigln++;

				}
				// 打印日期
				for (int i = 1; i <= days; i++) {

					if (sigln == 7) {
						System.out.println("");
						sigln = 0;
					}
					System.out.print(i + "\t");
					sigln++;

				}
				System.out.println();

			} else if (s.equals("2")) {
				start = false;
				System.out.println("over!!!");
				break;
			} else {
				System.out.println("选错了");
				break;
			}

		}
	}

	// 获得每月的1号是星期几
	public int isweekday() {

		// 方法1.用已经封装好的calendar类获得每月的第一天是周几
		Calendar aa = Calendar.getInstance();
		aa.set(year, month - 1, 1);
		return aa.get(Calendar.DAY_OF_WEEK) - 1;
		// 方法2.我用了网上的一个计算公式得到了每个月的第一天是周几
		// int sum = 0, count = 0;
		// for (int i = 1900; i < year; i++) {
		// if (isLeapYear(i))
		// count++;
		// }
		// for (int i = 0; i < month; i++)
		// sum += getMonthDay(i);
		// return ((sum + count + (year - 1900) * 365 - 1) % 7+2);

	}

	public boolean isLeapYear(int year1) // 判断是否是闰年
	{
		return ((year1 % 4 == 0 && year1 % 100 != 0) || (year1 % 400 == 0));
	}

	public int getMonthDay(int m) // 获取每个月的天数
	{
		switch (m) {
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			return 31;
		case 4:
		case 6:
		case 9:
		case 11:
			return 30;
		case 2:
			if (isLeapYear(year))
				return 29;
			else
				return 28;
		default:
			return 0;
		}
	}

}


直接贴代码了,过程很简单,没有用sun封装的日期类,

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值