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

/**
 * 题目:若某人从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();
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值