编写Java程序随机输入日期计算星期几,打印任意一年的日历

需求说明:

随机输入日期计算星期几,打印任意一年的日历

已知,1900年1月1日是星期1,用户随机输入年月日,计算星期几

实现思路:

一、知道1900年1月1日为星期一,求输入的年份月份与1900年1月1日相隔的总天数。闰年366天,平年365天。

通过运算符实现闰年判断的条件:

(1)能被4整除且不能被100整除的年份

(2)能被400整除的年份

(3)两个条件只需要满足其中任意一个即可,故闰年判断的条件:

((i % 4 == 0)&&(i % 100 != 0))||(i % 400 == 0)

 

实现代码:

import java.util.Scanner;

public class Calendar {
	public static void main(String[] args){
		//第一步:接收用户输入的年份和月份
		 Scanner input=new Scanner(System.in);
		 System.out.println("请输入年份");
		 int year=input.nextInt();
		 System.out.println("请输入月份");
		 int month=input.nextInt();
		 int day=0;
		 //第二步:求输入的年份月份与1900年1月1日相隔的总天数
		 for (int i = 1900; i < year; i++) {
			 if ((i % 4 == 0 && i % 100 != 0)||(i % 400 == 0)) {
				day+=366;
			}else {
				day+=365;
			}
		 }
		 	//求相隔月份的天数
		 for (int i = 1; i < month; i++) {
			if (i==2) {
				if ((year%4==0&&year%100!=0)||(year%400==0)) {
					day+=29;
				}else {
					day+=28;
				}
			}else if (i==4||i==6||i==9||i==11) {
				day+=30;
			}else {
				day+=31;
			}
		 }
		 //第三步:计算上个月最后一天是星期几
		int weeks=day%7;
		int day2=0;
		switch (month) {
			case 2:
				if (year%4==0&&year%100!=0||year%400==0) {
					day2+=29;
				}else {
					day2+=28;
				}
			    break;
			case 4:
			case 6:
			case 9:
			case 11:
				day2=30;
			default:
				day2=31;
			break;
		}
		//第四部:打印日历
		System.out.println("一\t二\t三\t四\t五\t六\t日");
		for (int i = 1; i <= weeks; i++) {
			System.out.print(" \t");
		}
		for (int i = 1; i <= day2; i++) {
			System.out.print(i+"\t");
			if ((i+weeks)%7==0) {
				System.out.println();
			}
		}
	}
}
发布了63 篇原创文章 · 获赞 73 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44893902/article/details/104625655