java 程序设计方法学 三天打渔俩天晒网

1.中国国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言/java/python实现程序解决问题。
基本要求:1.程序风格良好(使用自定义注释模板),提供友好的输入输出。
提高要求:1.输入数据的正确性验证。
2.使用文件进行数据测试。如将日期 20100101 20111214 等数据保存在in.txt文件中,程序读入in.dat文件进行判定,并将结果输出至out.txt文件。
package dc;
import java.util.Scanner; /导入java.util.Scanner/
public class Text{
static Scanner reader = new Scanner(System.in);
public static void main(String[] args) {
int year,mouth,day;
System.out.printf(“请输入年月日:”); /定义变量年月日/
year= reader.nextInt();
mouth= reader.nextInt();
day= reader.nextInt();
/判断用户输入的年份是否合理,对不合理的年份予以警告并提示修改,最终显示正确的年份/
if(year>=2010){
System.out.print(“年份为:”+year+”\n”);
}
else{
System.out. print(“输入的年份有错误,请输入一个大于2010的年份:”);
year= reader.nextInt();
System.out.print(“年份为:”+year+”\n”);
}
/*判断用户输入的月份是否合理
* 对不合理的月份提示修改
* 最终显示正确的月份*/
if(mouth<=12){
System.out.print(“月份为:”+mouth+”\n”);
}
else{
System.out. print(“\n输入的月份有误,请输入一个小于12的月份:”+”\n”);
mouth= reader.nextInt();
System.out.print(“月份为:”+mouth+”\n”);
}
if(day<=31)
{
System.out.println(“日期为:”+day+”\n”);}
else {
System.out.println(“输入的日期有误”);
day=reader.nextInt();
System.out.println(“日期为:”+day+”\n”);
}
int Febuary; /定义局部变量Febuary:表示闰年与平年二月的天数/
if((year%4==0&&year%100!=0)||(year%400==0)) /判别是否为闰年/
{
Febuary = 29;
}
else
{
Febuary = 28;
}
int[]F={0,31,0,31,30,31,30,31,31,30,31,30,31};/从F1开始表示一年各个月的天数,二月用0表示,在后文另加/
int sum=0 ;
for(int i=1;i<=mouth ;i++){
sum = sum+F[i-1];
}
if(mouth<=2){
sum =day+ sum; /三月之前的天数计算/
}
else{
sum=sum+day+Febuary;/三月(包括三月)之后的天数计算/
}
System.out.print(“今年已经过了”+sum+”天\n”);
int j=sum%5; /周期为五天,天数除以5取余数进行判断/
if(j==1||j==2||j==3){
System.out.printf(“今天打渔”);
}
else{
System.out.printf(“今天晒网”);
}
}
2.思路
根据题意可以将解题过程分为三步:
1)计算从2010年1月1日开始至指定日期共有多少天;
2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;
3)根据余数判断他是在“打鱼”还是在“晒网”;若余数为1,2,3,则他是在“打鱼”否则是在“晒网”。
4)要判断经历年份中是否有闰年,二月为29天,平年为28天。闰年的方法可以用伪语句描述如下:如果 ((年能被4除尽 且 不能被100除尽)或 能被400除尽)则该年是闰年;否则不是闰年。
2.程序流程图
这里写图片描述
3.测试结果
这里写图片描述
4.调试结果
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41895443/article/details/82225908