阅读背景:

【三天打鱼两天晒网】JAVA实现计算从2000年1月1日开始任意一天农夫是在打鱼还是_mazhi1144的博客

来源:互联网 
/**
 * 题目:若某人从2000年1月1日开始进行“三天打鱼两天晒网”,任意输入一个日期,计算这一天是“打鱼”还是“晒网”
 * 平年一年365天,闰年366天
 * 2000年是闰年,四年一润
 * 在此基础上,每一百年减少一个闰年
 * 在上面基础上,每四百年多一个闰年
 * 得出结论:
 * 闰年修正yearsData=(((年份数字-2000)/4+1)-((年份数字-2000)/100)+((年份数字-2000)/400))
 * 每月天数分别为31,28(29),31,30,31,30,31,31,30,31,30,31.
 * 由上得知;
 * 月份对于日期的影响分别为1,3,1,0,1,0,1,1,0,1,0,1.(闰月的影响在年份中计算)
 * 月份修正=monthsData[]={1,4,0,0,1,1,2,3,3,4,4,0}
 * 日期修正=daysData=day%5
 * 特殊情况:年份为闰年且月份小于等于2,不计算本年闰年修正,
 * 整理以上内容
 * 得出计算公式:(闰年修正+月份修正+日期修正+特殊修正)
 * 
 * @author 11440
 *
 */
import java.util.Scanner;
public class Demo18 {
	public static void main(String[] args) {
		//输入年份,计算年份修正(闰年修正)
		int year,yearsData;
		//输入月份,计算月份修正
		int month,monthsData;
		//月份修正
		int data[]= {1,4,0,0,1,1,2,3,3,4,4,0};
		//输入年份,计算年份修正
		int daysData,day;
		//特殊修正:闰年的2月29日前,不计算本年闰年
		int special;
		//闰年标志
		boolean leap;
		Scanner input=new Scanner(System.in);
		System.out.print("请输入年份数字:");
		year=input.nextInt();
		yearsData=(((year-2000)/4+1)-((year-2000)/100)+((year-2000)/400))%5;
		if(year%400==0)
			leap=true;
		else if(year%100!=0&&year%4==0)
			leap=true;
		else
			leap=false;
		System.out.print("请输入月份数字:");
		month=input.nextInt();
		if(month==1)
			monthsData=0;
		else
			monthsData=data[month-2];
		if(leap&&month<3)
			special=-1;
		else
			special=0;
		System.out.print("请输入日期数字:");
		day=input.nextInt();
		daysData=day%5;
		if((yearsData+monthsData+daysData+special)%5<=3&&(yearsData+monthsData+daysData+special)%5!=0)
			System.out.println("打鱼");
		else
			   System.out.println("晒网");
			   input.close();
	}
}

/**
 * 题目:若某人从2000年1月1日开始进行“三天打鱼两天晒网”,任意



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: