一:题目:
中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。
二:设计思路:
首先选择测试方法,第一种为利用IO流输入输出并在建好的out.txt文件中保存打印出来的内容,获取in.txt中为8位String类型变量,利用subString()方法对字符串进行截取,在利用integer.parseInt()方法将字符串转换成int类型。第二种为手动输入年月日。两种方法获取到年月日后,先对年进行判断,若小于2010,则结束程序,若大于等于2010,则判断是否闰年,然后对日期和月份对应的日期相加,年数逐次相减,直到年份小于2010,最后对总日期除以5,若余数为1,2,3:则出海打渔,如余数为4,5则在家休息
三:编译运行环境:
Eclipse+Windows
四:流程图:
代码
package homework;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
public class Fish1 {
public static void main(String[] args) {
int year;
int month;
int day;
int n;
int total=0;
int year1[]= {31,28,31,30,31,30,31,31,30,31,30,31};
int year2[]= {31,29,31,30,31,30,31,31,30,31,30,31};
Fish fish1 = new Fish();
Scanner scanner = new Scanner(System.in);
System.out.println(“选择测试方式,输入1:文件测试 输入2:手动输入测试”);
n=scanner .nextInt();
switch(n) {
case 1:
BufferedWriter bw=null;
BufferedReader br=null;
try
{
FileReader f=new FileReader("D:\\in.txt");
br=new BufferedReader(f);
FileWriter fw=new FileWriter("D:\\out.txt");
bw=new BufferedWriter(fw);
String str=br.readLine();
if(str!=null) {
String stry=str.substring(1, 4);
String strm=str.substring(5,6);
String strd=str.substring(7, 8);
try {
int year3 = Integer.parseInt(stry);
int month3 = Integer.parseInt(strm);
int day3 = Integer.parseInt(strd);
for(int i=year3;i>=2010;i--) {
if(year3%4==0&&year3%100!=0) {
total=total+366;
for(int j=0;j<month3-1;j++) {
total=total+year2[j];
}
total=total+day3;
}
else {
total=total+365;
for(int j=0;j<month3-1;j++) {
total=total+year1[j];
}
total=total+day3;
}
}
if(total%5==1||total%5==2||total%5==3) {
String string1="今天不能偷懒,出海打渔了,记得戴口罩";
System.out.println(string1);
bw.write(string1);
}
else {
String string2="今天偷懒了,在家睡大觉";
System.out.println(string2);
bw.write(string2);
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
else
{
System.out.println("文件为空");
}
} catch (Exception e)
{
e.printStackTrace();
}
finally {
try {
br.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
break;
case 2:
System.out.println("请输入年");
year=scanner.nextInt();
System.out.println("请输入月");
month=scanner.nextInt();
System.out.println("请输入日");
day=scanner.nextInt();
if(year=2010;i--) {
if(year%4==0&&year%100!=0) {
total=total+366;
for(int j=0;j<month-1;j++) {
total=total+year2[j];
}
total=total+day;
}
else {
total=total+365;
for(int j=0;j<month-1;j++) {
total=total+year1[j];
}
total=total+day;
}
}
if(total%5==1||total%5==2||total%5==3) {
System.out.println("今天不能偷懒,出海打渔了,记得戴口罩");
}
else {
System.out.println("今天偷懒了,在家睡大觉");
}
}
}
}
}