0
点赞
收藏
分享

微信扫一扫

java基础 Day07

东方小不点 2022-03-30 阅读 64

一、万年历

需求:输入年和月,输出当月的日历
(1900年1月1日是星期一)

思路:
1、计算出输入的某年某月1日距离1900年1月1日的天数,模上7求余数,得到某年某月1日是星期几
2、总天数 = 1900年~输入年的总天数 + 1月~输入月的总天数 +1
3、用switch语句选择得到月份的天数,注意平闰年的二月天数不一样
4、当总天数模上7 = 0时,week =7

import java.util.Scanner;
public class Calendar{
	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();
		//计算离1900年1月1日的总天数
			//计算1900年~输入年的总天数
		int yearDaySum=0;
		for(int i=1900;i<year;i++){
			if((i%4==0 && i%100!=0)||(i%400==0)){
				yearDaySum += 366;
			}else{
				yearDaySum +=365;
			}
		}
			//计算 1月~输入月的总天数
		int monthDaySum=0;
		for(int i=1;i<month;i++){
			switch(i){
				case 1:case 3:case 5:case 7:case 8:case 10:case 12:
				monthDaySum +=31;
				break;
				case 4:case 6:case 9:case 11:
				monthDaySum += 30;
				break;
				case 2:
				if((year%4==0 && year%100!=0)||(year%400==0)){
					monthDaySum += 29;
				}else{
					monthDaySum +=28;
				}
			}
			
		}
		//总天数
		int sum = monthDaySum+yearDaySum+1;
		//计算星期几
		int week = sum % 7;
		if(week == 0){
			week = 7;//特殊情况
		}
		//得出月份天数
		int day=0;
		switch(month){
			case 1:case 3:case 5:case 7:case 8:case 10:case 12:
			day = 31;
			break;
			case 4:case 6:case 9:case 11:
			day = 30;
			break;
			case 2:
			if((year%4==0 && year%100!=0)||(year%400==0)){
				day = 29;
			}else{
				day = 28;
			}
		}
		//打印
		System.out.println("--------------"+year+"年"+month+"月--------------");
		System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期天\t");
		int num=0;//计算换行,每输出7次换一次行
		for(int i=1;i<week;i++){
			System.out.print("\t");
			num++;
		}
		for(int i =1;i<=day;i++){
			if(num==7){
				System.out.println();//达到7次换行
				num=0;
			}
			System.out.print(i+"\t");
			num++;
		}
	}
}

代码启示:考虑循环次数时,代入具体的情况纪进行判断

举报

相关推荐

Java Day07

Day07

Java学习-Day07

Java学习 Day07

java笔记Day07

day07数组

微服务day07

0 条评论