Java流程控制:实验-控制结构的综合应用:万年历

实践内容——万年历
一、实践要求
使用Java语言编写Java程序,输出××××年××月对应的日历。效果如下图所示。
在这里插入图片描述
提示:

1、判断润年(四年一闰;百年不闰,四百年再闰)
2、键盘读数据:

Scanner sc  = new Scanner(System.in);  
int  month = sc.nextInt();

3、本案例目的是综合使用Java控制结构。
4、1900年1月1日是星期一

二、万年历的实现步骤:

(1)从键盘读入一个整数的要查询的年份year和月份month。
(2)计算历史从1900年1月1日至year-1年12月31日,历时多少天?
(3)计算从指定年份的1月1日至指定月份month之前总共多少天?
运行代码:
(4)计算month月份的第一天是星期几?
(5)打印year年month月份的日历。

运行代码:

import java.util.Scanner;

public class Mylalendar {
    
    

	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		//一、 1. 输入要查询的年份和月份
		System.out.print("请输入要查询的年份:");
		int year = sc.nextInt();
		System.out.print("请输入要查询的月份:");
		int month = sc.nextInt();
		
		//二、 处理:(1)year年month月1日是星期几;(2)year年month月有多少天
		//2.计算1900年1月1日到year-1年12月31日,共计多少天
		int sum1 = 0;
		for(int y=1900;y<year;y++) {
    
    
			if(y % 4 == 0 && y % 100 != 0 || y % 400 == 0) {
    
    //满足闰年的条件
				sum1 += 366;
			}else {
    
    //平年
				sum1 += 365;
			}
		}
		//3.求year年1月至month-1月共计多少天
		int sum2 = 0;
		for(int m = 1;m < month;m ++) {
    
    
			int days =0;//m月份的天数
			if(m == 2) {
    
    
				days = (year % 4 == 0 && year % 400 != 0 || year % 400 == 0)? 29:28;
			}else if (m == 4 || m == 6 || m == 9 || m ==11) {
    
    
				days = 30;
			}else {
    
    
				days = 31;
			}
			
			sum2 += days;
		}
		
		//4.计算month月份的第1天是星期几?
		int day = (sum1 + sum2 +1) % 7;//0:星期日。1~6:星期一~星期六。
		//year年month月有多少天?
		int days = 0;
		switch(month) {
    
    
		case 2:days = (year % 4 == 0 && year % 400 != 0 || year % 400 == 0)? 29:28;break;
		case 4:
		case 6:
		case 9:
		case 11:days = 30;break;
		default:days = 31;break;//此处break可省略。
		}
		
		//三、 打印输出year年month月的日历
		System.out.println("\t\t"+year+"年"+month+"月\n------------------------------------------------------");
		System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
		for(int i = 0;i < day;i ++) {
    
    
			System.out.print("\t");
		}
		
		for(int i = 1;i <= days;i ++) {
    
    
			System.out.print(i+"\t");
			if((i + day) % 7 == 0)
				System.out.println();
		}
		sc.close();
	}

}

猜你喜欢

转载自blog.csdn.net/m0_46700215/article/details/106320750
今日推荐