/**
* 题目:若某人从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();
}
}
【三天打鱼两天晒网】JAVA实现计算从2000年1月1日开始任意一天农夫是在打鱼还是
最新推荐文章于 2022-10-09 15:54:52 发布