java基础———万年历的制作

模拟制作万年历 最重要的就是如何确定这个月的第一天是周几 和 这个月 有几天 。

然而 每年的每个月 除了二月 都是固定的 要判断是否是闰年,和这个月有几天 然后再按照顺序打印出来

public class Demo01 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("请输入要查询的年份:");  //2018
		int year = in.nextInt();
		System.out.println("请输入要查询的月份:");  //7
		int month = in.nextInt();
		int allDays = 0; //存储总天数
		int monthDays = 0; //月份的天数
		for(int i = 1900; i < year; i++){
			if((i % 4 ==0 && i%100!=0) || (i%400==0)){
				allDays += 366;
			}else{
				allDays += 365;
			}
		}
		
		for(int i = 1;  i <= month; i++){
			switch (i) {
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
				monthDays = 31;
				break;
			case 4:
			case 6:
			case 9:
			case 11:
				monthDays = 30;
				break;
			case 2:
				if((year % 4 ==0 && year %100!=0) || (year %400==0)){
					monthDays = 29;
				}else{
					monthDays = 28;
				}
			}
			if(i < month)
				allDays += monthDays;
		}
	
		int week = (allDays+1)%7;
		
		System.out.println("日\t一\t二\t三\t四\t五\t六");
		for(int i = 0; i < week; i++){
			System.out.print("\t");
		}
		
		for (int i = 1; i <= monthDays; i++) {
			System.out.print(i+"\t");
			if((allDays+i) % 7 == 6)
				System.out.println(); //换行作用
		}
	}
}

猜你喜欢

转载自blog.csdn.net/m0_37729047/article/details/81253765