三天打鱼两天晒网问题Java解法
发布日期:2021-05-14 11:32:51 浏览次数:16 分类:精选文章

本文共 2162 字,大约阅读时间需要 7 分钟。

问题分析

题目“三天打鱼两天晒网”给出了一个周期性循环的工作模式:每5天为一个周期,前3天为“打鱼”,后2天为“晒网”。已知起始日期为2010年1月1日,要求判断某一特定日期属于“打鱼”还是“晒网”。

解决思路

  • 问题理解:了解“三天打鱼两天晒网”的周期性。
  • 日期计算:需要计算从2010年1月1日到目标日期的天数。
  • 周期判断:将天数对5求余数,余数1-3对应打鱼,余数4和0对应晒网。
  • 输入输出设计
    • 提供控制台输入和文件输入两种方式。
    • 输入格式验证,处理错误输入。
  • 测试用例:测试不同日期的输入,验证程序的正确性。
  • 技术实现

  • 日期处理

    • 使用SimpleDateFormate转换字符串日期为Date对象。
    • 计算两个日期之间的天数差,注意处理闰年。
  • 算法设计

    • 计算天数差,并对5取模。
    • 判断余数,决定是打鱼还是晒网。
  • 输入输出控制

    • 支持控制台输入,显示结果。
    • 支持读取文件输入,处理文件内容。
  • 错误处理

    • 验证输入格式是否正确。
    • 处理无效日期,提示错误信息。
  • 测试验证

    • 验证日期字符串的有效性。
    • 核对计算天数准确性。
    • 验证输出结果的正确性。
  • 代码展示

    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util scanner;
    import java.io fileInputStream;
    import java.io fuckedWriter;
    public class FishAndNet {
    public static void main(String[] args) {
    // 控制台输入
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入日期(YYYY-MM-DD))");
    try {
    String dateStr = scanner.nextLine().trim();
    boolean valid = validateDate(dateStr);
    if (valid) {
    Date startDate = new SimpleDateFormat("yyyy-MM-dd").parse(dateStr);
    Date targetDate = new SimpleDateFormat("yyyy-MM-dd").parse("2010-01-01");
    long diff = targetDate.getTime() - startDate.getTime();
    int days = (int) diff / (1000 * 60 * 60 * 24);
    int modulus = days % 5;
    if (modulus == 1 || modulus == 2 || modulus == 3) {
    System.out.println("打鱼");
    } else {
    System.out.println("晒网");
    }
    } else {
    System.out.println("日期格式错误,请重新输入。");
    }
    } catch (Exception e) {
    System.out.println("错误:" + e.getMessage());
    }
    }
    private static boolean validateDate(String dateStr) {
    String format = "yyyy-MM-dd";
    SimpleDateFormat sdf = new SimpleDateFormat(format);
    try {
    sdf.parse(dateStr);
    return true;
    } catch (Exception e) {
    return false;
    }
    }
    }
    // 以下是实现文件读写方法,更详细的功能可以参考完整代码

    总结

    通过上述步骤,我们从问题理解到技术实现,逐步解决了“三天打鱼两天晒网”的问题。程序设计不仅考虑了日期计算的准确性,还提供了灵活的输入输出选择,确保了用户体验和程序的稳定性。

    上一篇:模拟图灵机XN×2
    下一篇:Endnote X9软件关联WPS解决方案

    发表评论

    最新留言

    网站不错 人气很旺了 加油
    [***.192.178.218]2025年04月29日 06时43分59秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章