作业1:三天打鱼两天晒网

三天打鱼两天晒网源代码:
    import java.util.Scanner;
/*
 * Scanner类:输入流扫描器类
 * 使用时要加:import java.util.Scanner;Scanner s=new Scanner(System.in);
 * 方法:String nextInt():从控制台返回一个int数据类型
 */
public class zuoye1 {
    public static void main(String args[]){
        Scanner s=new Scanner(System.in);//输入年月日
        System.out.println("请输入年:");
        int y=s.nextInt();//Scanner类方法,返回Int值
        System.out.println("请输入月:");
        int m=s.nextInt();
        System.out.println("请输入日:");
        int d=s.nextInt();
        int sum=0;//记录相差的天数
        int sum1=0;//记录这个日期在这一年已经过了多少天(同一年的情况下)
        switch(m-1){//计算本年已过月的总天数
        case 11:sum1+=30;
        case 10:sum1+=31;
        case 9:sum1+=30;
        case 8:sum1+=31;
        case 7:sum1+=31;
        case 6:sum1+=30;
        case 5:sum1+=31;
        case 4:sum1+=30;
        case 3:sum1+=31;
        case 2:if(y%4==0&&y%100!=0||y%400==0){//判断2月份为多少天
                sum1+=29;//闰年
        }
        else{
            sum1+=28;//非闰年
        }
        case 1:sum1+=31;
        }
        sum1+=d;//d为该查询日期本月已过的天数,计算本年总共过了多少天
        if(y==2010){//计算2010年已经过去的天数
            sum=sum1-1;//由于2010年1月1日已经过去了一天,所以要减去1
        }
        else if(y>2000){
            int sum2=365;//计算了2010年1月1号在这一年还剩下多少天
            int sum3=0;//计算相差的年份的总天数,闰年366,非闰年365
            for(int i=2011;i<y;i++){
                if (i%4==0&&i%100!=0||i%400==0){//闰年
                    sum3+=366;
                }
                else{
                    sum3+=365;//非闰年
                }
            }
            sum=sum1+sum2+sum3;//相差的天数为第i年已经过的天数+2010年已经过的天数+中间相差年的总天数
        }
        System.out.println(y+"年"+m+"月"+d+"日和2010年1月1日相差的天数是:"+sum);
        if(sum%5==0||sum%5==1||sum%5==2){//相差总天数除以5的余数为0,1,2时为打鱼
            System.out.println(y+"年"+m+"月"+d+"日在打渔");
        }

        else{//其余日子在晒网
            System.out.println(y+"年"+m+"月"+d+"日在晒网");
        }
    }
}

算法设计思路:
(1)计算从指定日期到2010年1月1日相差多少天
假设指定日期为2020年1月1日,那么相差的天数就是2010年还剩的天 数 365,11年到19年的整天数,20年已经过了的天数;
注意:如果是同一年,输入的日期已经过的天数-1即可
(2)一个日期和2010年1月1日相差
0天 打渔 1天 打渔 2天 打渔 3天 晒网 4天 晒网 567 打渔 89 晒网
结论:周期为5天,所以用总天数除以5计算,
相差的天数总天数%5等于0,1,2就是打渔,3,4就是晒网
(3)判断闰年与非闰年
如果年%4等于0,年份%100不等于0,年份%400等于0,则该年是闰年,否则为非闰年,且闰年366天,闰年2月份为29天,非闰年365天,非闰年二月份为365天
调试截屏:
1.本年已过天数计算这里写图片描述

2.本年内打渔晒网计算这里写图片描述

3.不同年份计算这里写图片描述

4.优化处理这里写图片描述
测试截屏:
1.同一年测试结果这里写图片描述

2.不同年测试结果
这里写图片描述
程序流程图:
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值