【JAVA】中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。

本题思路:首先定义一个初始年份year0,然后利用循环控制与if语句的嵌套实现用户的输入,用户只有输入条件有效(年:2010及2010之后,月:112,日:131)的年月日才能进行程序的进一步运行,用户只有三次输入的机会,三次都失败之后程序直接结束。之后利用循环控制与条件语句的嵌套判断经过的年份是否为闰年,闰年为366天,平年为365天,之后先判断是否为闰年,利用switch语句将月份经过的天数经过判断之后相加,日数则直接相加。将计算的总天数sum求5的余数,若余数为1,2,3则为打鱼,否则为晒网。
图1----程序设计概要图
图2----判断闰年流程图下面就是全部代码了:

public class Application {
    public static  void main(String[] args) {
        int year0 = 2010;
        System.out.println("请输入想查询的日期(年:2010及2010之后;月:1~12;日:1~31):");//输入规则
        Scanner s = new Scanner(System.in);
        System.out.println("年:");
        int year = 0;
        for (int i = 0; i < 3; i++) {
             year = s.nextInt();     //输入年
            if (year<2010){
                System.out.println("您输入的年份不符合规范!");
                if(i < 2){
                    System.out.print("请再次输入:");
                }
            }
            else{
                break;
            }
            if( i == 2 ){
                System.out.println("您已失误三次,程序终结!");
                System.exit(0);     //结束程序
            }
        }
        System.out.println("月:");
        int month = 0;    //输入月
        for (int i = 0; i < 3; i++) {
            month = s.nextInt();     //输入月
            if (month <= 0||month > 12){
                System.out.println("您输入的月份不符合规范!");
                if(i < 2){
                    System.out.print("请再次输入:");
                }
            }
            else{
                break;
            }
            if( i == 2 ){
                System.out.println("您已失误三次,程序终结!");
                System.exit(0);     //结束程序
            }
        }
        System.out.println("日:");
        int day = 0;    //输入日
        for (int i = 0; i < 3; i++) {
            day = s.nextInt();     //输入日
            if (day <= 0||day > 31){
                System.out.println("您输入的日数不符合规范!");
                if(i < 2){
                    System.out.print("请再次输入:");
                }
            }
            else{
                break;
            }
            if( i == 2 ){
                System.out.println("您已失误三次,程序终结!");
                System.exit(0);     //结束程序
            }
        }
        int sum = 0;
        for (int i = year0; i <= year - 1; i++) {
            if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0))  //判断year是否为闰年
            {
                sum += 366;
            } else {
                sum += 365;
            }
        }
        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
            switch (month) {
                case 2:
                    sum += 31;break;
                case 3:
                    sum += 29 + 31;break;
                case 4:
                    sum += 31 + 29 + 31;break;
                case 5:
                    sum += 30 + 31 + 29 + 31;break;
                case 6:
                    sum += 31 + 30 + 31 + 29 + 31;break;
                case 7:
                    sum += 30 + 31 + 30 + 31 + 29 + 31;break;
                case 8:
                    sum += 31 + 30 + 31 + 30 + 31 + 29 + 31;break;
                case 9:
                    sum += 31 + 31 + 30 + 31 + 30 + 31 + 29 + 31;break;
                case 10:
                    sum += 30 + 31 + 31 + 30 + 31 + 30 + 31 + 29 + 31;break;
                case 11:
                    sum += 30 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 29 + 31;break;
                case 12:
                    sum += 30 + 30 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 29 + 31;break;
            }
        } else {
            switch (month) {
                case 2:
                    sum += 31;break;
                case 3:
                    sum += 28 + 31;break;
                case 4:
                    sum += 31 + 28 + 31;break;
                case 5:
                    sum += 30 + 31 + 28 + 31;break;
                case 6:
                    sum += 31 + 30 + 31 + 28 + 31;break;
                case 7:
                    sum += 30 + 31 + 30 + 31 + 28 + 31;break;
                case 8:
                    sum += 31 + 30 + 31 + 30 + 31 + 28 + 31;break;
                case 9:
                    sum += 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;break;
                case 10:
                    sum += 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;break;
                case 11:
                    sum += 30 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;break;
                case 12:
                    sum += 30 + 30 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;break;
            }
        }
        sum += day;
        int a = sum % 5;
        System.out.println("从2010年1月1日开始已经过了" + sum + "天");
        switch (a) {
            case 0:
                System.out.println("晒网ing!");break;
            case 1:
                System.out.println("打鱼ing!");break;
            case 2:
                System.out.println("打鱼ing!");break;
            case 3:
                System.out.println("打鱼ing!");break;
            case 4:
                System.out.println("晒网ing!");break;
            }
    }
}

输出测试:规则测试
完整输出一次
以上就是所有的思路分析与代码分享,整个程序不使用数组,只使用基本的循环语句与条件语句就可以完成。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值