一丶中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用Java实现程序解决问题。
基本要求:1.程序风格良好(使用自定义注释模板),提供友好的输入输出。
提高要求:1.输入数据的正确性验证。
2.使用文件进行数据测试。如将日期 20100101 20111214 等数据保存在in.txt文件中,程序读入in.dat文件 进行判定,并将结果输出至out.txt文件。

*问题分析与算法设计
根据题意可以将解题过程分为三步:
1)计算从2010年1月1日与指定日期相差多少天;
2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;
3)根据余数判断他是在“打鱼”还是在“晒网”;
若 余数为0,1,2,则他是在“打鱼”
否则 是在“晒网”
在这三步中,关键是第一步。
求从2010年1月1日与指定日期相差多少天,要判断经历年份中是否有闰年,二月为29天,平年为28天。闰年的方法可以用伪语句描述如下:
如果 ((年能被4除尽 且 不能被100除尽)或 能被400除尽)
则 该年是闰年;
否则 不是闰年。


/** @author 徐於敏* 三天打渔,两天晒网问题*/import java.util.Scanner;
import java.io.*;public class Week1 {public static void main(String[] args) throws Exception {//创建一个文件字节输出流FileOutputStream fos = new FileOutputStream("D:\\JAVA程序\\homework\\out.txt");String result;/** 从键盘中输入年月日*/Scanner n=new Scanner(System.in);System.out.println("请输入年:");int year=n.nextInt();System.out.println("请输入月份:");int month=n.nextInt();System.out.println("请输入日:");int day=n.nextInt();int sum=0;//记录相差的天数int sum1=0;//记录输入的日期在初始年过了多少天switch(month-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(year%4==0&&year%100!=0||year%400==0)sum1+=29;elsesum1+=28;case 1: sum1+=31;}sum1+=day;//在2010年1月1日到指定日期的总天数if(year<2010||month>12||day>31) {//判断输入的年月日是否正确System.out.println("输入的日期有误");return;} else if(year==2010) {//输入的年份是同一年sum=sum1-1;//减去1月1日后,得到的天数}else if(year>2010) {int sum2=364;//计算2010这一年除了1月1日后还剩几天,2010年为平年,还剩364天int sum3=0;//定义一个变量用来计算所输入的年份与2010年之间有几年for(int i=2011;i<year;i++){//计算输入年份与初始年份之间间隔年的天数,若没有间隔,则不执行if(i%4==0&&i%100!=0||i%400==0) {//判断是否为闰年,是+366天sum3+=366;}else {//否则为平年,+365天sum3+=365;}}sum=sum1+sum2+sum3;//计算后相差的总天数}System.out.println("2010年1月1日与"+year+"年"+month+"月"+day+"日"+"相差的天数是:"+sum);/** 若两个日期之间相差天数对5取余,余数为0,1,2为打渔,否则为晒网*/if(sum%5==0||sum%5==1||sum%5==2) {result = year+"年"+month+"月"+day+"日"+"某人在打渔";System.out.println(result+":已经写入文件");fos.write(result.getBytes());//将结果写入out.txt}else {result = year+"年"+month+"月"+day+"日"+"某人在晒网";fos.write(result.getBytes());System.out.println(result+":已经写入文件");//将结果写入out.txt}fos.close();//关闭流n.close();}
}

运行截图:
1.成功运行


2.错误运行

总结:本次作业是“三天打鱼两天晒网”,主要实现了2010年1月1日开始打渔,到输入的日期,该人是在打鱼还是晒网的功能,并识别错误日期的输入,输出两者相差的天数。
本次作业的主要问题就是闰年的判断和相差天数的计算,解决了这两个问题,整个程序就很清晰了。我在程序上添加了输入数据的正确性判断的功能,以及将程序的结果输出到out.txt中。程序写的过程中还是有许多小错误的,例如循环的条件老是出错,没有处理异常,但最终还是一一解决了,这时,我体会到了自己写出一个正确的程序的喜悦。遗憾的是,还有一部分功能没有实现,但我相信以后经过自己的学习,能够写出更好的程序。。

中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用java实现程序解决问题。相关推荐

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

    问题描述:中国有句俗语叫"三天打鱼两天晒网".某人从2010年1月1日起开始"三天打鱼两天晒网",问这个人在以后的某一天中是"打鱼"还是&q ...

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

    问题: 中国有句俗语叫"三天打鱼两天晒网".某人从2010年1月1日起开始"三天打鱼两天晒网",问这个人在以后的某一天中是"打鱼"还是&qu ...

  3. 中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”, 问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言/java/python实现程序解决问题

    /* 中国有句俗语叫"三天打鱼两天晒网".某人从2010年1月1日起开始"三天打鱼两天晒网", 问这个人在以后的某一天中是"打鱼"还是&qu ...

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

    此题目难度不大,主要难度在于所给日期闰年判定以及经过的年份中闰年的个数问题, 对于输入日期的中日正确性判断,只需建立对应月份天数的数组即可判断.求出所给年份到初始年份经过的天数后对五取余判定是否大于三 ...

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

    已经实现的功能: 从键盘输入指定的年.月.日: 计算从2010年1月1日至指定日期共有多少天: 由于"打鱼"和"晒网"的周期为5天,所以将计算出的天数用5去除. ...

  6. 中国有句俗语叫“三天打鱼两天晒网”,某人从90年1月1日起开始“三天打鱼两天晒网”。问这个人在以后的某一天中是在“打渔”,还是在“晒网”(数组,循环,函数)

    中国有句俗语叫"三天打鱼两天晒网",某人从90年1月1日起开始"三天打鱼两天晒网".问这个人在以后的某一天中是在"打渔",还是在" ...

  7. 7-16 三天打鱼两天晒网 (15分) 中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?

    7-16 三天打鱼两天晒网 (15分) 中国有句俗语叫"三天打鱼两天晒网".假设某人从某天起,开始"三天打鱼两天晒网",问这个人在以后的第N天中是"打 ...

  8. 中国有句俗语叫“三天打鱼两天晒网”。假设某人从说明某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?

    中国有句俗语叫"三天打鱼两天晒网".假设某人从说明某天起,开始"三天打鱼两天晒网",问这个人在以后的第N天中是"打鱼"还是"晒网& ...

  9. 中国有句俗语叫“三天打鱼两天晒网”,某人从90年1月1日起开始“三天打鱼两天晒网”。问这个人在以后的某一天中是在“打渔”,还是在“晒网”. **输入格式要求:“%d%d%d“ 提示信息:“Enter

    中国有句俗语叫"三天打鱼两天晒网",某人从90年1月1日起开始"三天打鱼两天晒网".问这个人在以后的某一天中是在"打渔",还是在" ...

最新文章

  1. Python常用包的使用
  2. FreeRTOS — 临界段和开关中断
  3. linux copy_from/to_user原理
  4. java jna_Java中jna的用法
  5. 版权监控中心怎么关闭_防火门监控系统让消防通道疏散更安全
  6. 将整个表单设置为只读_如何将Git的界面语言设置为中文?
  7. 常用加密算法之非对称加密算法
  8. resnet10 从tk1 上移植到linux 上 上遇到的问题
  9. Python装饰器之一
  10. ecs云服务器搭建php,云服务器 ecs怎么配置php
  11. 早上运动和晚上运动,哪个更利于减肥?
  12. 最新米酷6.26影视源码+解析接口+步骤
  13. 支付宝-线上资金授权(小程序)
  14. 什么是模式、什么是模式识别、模式识别的方法、过程
  15. iOS系列开发-版本控制工具Git的使用
  16. 【Linux】Linux发行版本的简介与选择
  17. 【超详细】Docker从入门到干活,就看这一篇文章
  18. 预处理命令 文件包括
  19. android studio无法打开Browse ReRepository的解决办法(无法收索到插件库的解决办法)
  20. 电脑开关坏了,用Reset键代替开关机键盘

热门文章

  1. 假如生命是乏味的,我怕有来生;假如生命是有趣的,今生已是满足。
  2. Doxygen安装和使用
  3. 大坝平台参考材料——志豪未来科技有限公司v2
  4. globalmapper如何选取图像上的点_图像去雾的算法历史与综述
  5. K-means与DBSCAN聚类算法
  6. type struct 和struct的区别
  7. 返利营销平台案例简略分析
  8. BAT云战争新动向:收编“旧军”,占山为王
  9. 03基础自绘-13滑动选择-tumbler
  10. Eclipse在导入项目时显示 “Invalid Project Description”时的处理方法