• 算法: 黑色星期五


    解析: 题目给了一个很有用的信息"1998年1月1日是星期四",我们可以根据这个信息为依据判断当前是星期几。另外需要自定义两个方法,一个方法对闰年和平年的判断,一个方法返回不同年份每个月的天数。

    package _4_9_test;
    
    import java.time.MonthDay;
    import java.util.Scanner;
    
    /*黑色星期五
     * 星期从1998年1月1号星期四开始,每七天循环一次,首先求出当前年份的1月1号是星期几
     * 号数从每年的1月1号开始计数,达到了当前月份天数后回到1
     * 
     * */
    public class EightyFour {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		Scanner scanner = new Scanner(System.in);
    		int year = scanner.nextInt();
    
    		// 统计黑色星期五出现的次数
    		int count = 0;
    		// 存储年份
    		int iniYear = 1998;
    		// 存储星期
    		int week = 4;
    		// 存储每个月的天数
    		int monthNum;
    
    		// 从1998年开始
    		while (iniYear <= year) {
    			for (int i = 1; i <= 12; i++) {
    				// 储存当天的号数
    				int monthDay = 1;
    				// 得到当前月份的天数
    				monthNum = monthNum(iniYear, i);
    
    				for (int j = 1; j <= monthNum; j++) {
    					week++;
    					monthDay++;
    					// 对星期进行判断
    					if (week > 7) {
    						week = 1;
    					}
    					// 对当前多少号进行判断
    					if (monthDay > monthNum) {
    						monthDay = 1;
    					}
    					// 如果当前是输入的年份且是13号和星期五,count加1
    					if (iniYear == year && week == 5 && monthDay == 13) {
    						count++;
    					}
    				}
    
    			}
    			iniYear++;
    		}
    
    		System.out.println(count);
    
    	}
    
    	// 自定义判断闰年的方法
    	public static boolean judge(int year) {
    		boolean flag = false;
    
    		if ((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0)) {
    			flag = true;
    		}
    
    		return flag;
    	}
    
    	// 根据年份,返回当前月份的天数
    	public static int monthNum(int year, int month) {
    		switch (month) {
    		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:
    			// 如果是闰年,二月份有29天,平年二月份有28天
    			if (judge(year)) {
    				return 29;
    			} else {
    				return 28;
    			}
    		}
    		return 0;
    	}
    
    }
    
    
  • 相关阅读:
    禁止进入activity自动弹出键盘
    sqlite的limit使用
    关于anroid设置webview背景方法探讨(转)
    遍历ListView,查出每一项的内容
    虚拟机网络不通故障解决
    zabbix第一篇:zabbix安装及使用
    ansible使用1
    PS1修改xshell命令行样式
    手动配置网卡配置文件ifcfg-eth0
    Linux虚拟机centos系统安装
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/12708885.html
Copyright © 2020-2023  润新知