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

一:题目:
中国有句俗语叫“三天打鱼两天晒网”。某人从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) {
				System.out.println("输入年份有错误,请输入2010年后的");
			}
			else {
				for(int i=year;i>=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("今天偷懒了,在家睡大觉");
				}
			}
		}
	}
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值