Java编写三天打渔两天晒网,采用IO流文件输入和手动Scanner输入

Quinta ·
更新时间:2024-11-14
· 848 次阅读

一:题目:
中国有句俗语叫“三天打鱼两天晒网”。某人从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("今天偷懒了,在家睡大觉"); } } } }

}


作者:Eddie666



scanner io io流 JAVA 输入

需要 登录 后方可回复, 如果你还没有账号请 注册新账号