“三天打鱼两天晒网的java程序

该博客围绕‘三天打鱼两天晒网’问题展开,要求从2010年1月1日起,判断某一天是打鱼还是晒网,提供了C、C++、Java、Python语言实现思路,有基本和提高要求,还给出了Java代码示例及文件读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

程序运行结果截图:
这里写图片描述

源代码:
package cn.zuoye1;
import java.io.*;
public class Test1 {
public static void main(String[] args) throws Exception{
FileReader reader=new FileReader(“C:\Users\admin\Desktop\in.txt”);
BufferedReader br=new BufferedReader(reader);
FileWriter writer=new FileWriter(“C:\Users\admin\Desktop\out.txt”);
BufferedWriter bw=new BufferedWriter(writer);
int date=0;
//int Sumday=0;
String str=null;
while ((str=br.readLine())!=null) {
date=Integer.valueOf(str);//将文件中的时间读入
int y=date/10000;//年份
int m=date%10000/100;//月份
int d=date%100;//日期
if(SumDay(y,m,d)%5==0||SumDay(y,m,d)%5==1||SumDay(y,m,d)%5==2)
{System.out.println(str+”日在打鱼”+”距离开始日总天数为:”+SumDay(y,m,d)+”天”);
bw.write(str+”在打鱼”+”距离开始日总天数为:”+SumDay(y,m,d)+”天”);
bw.newLine(); }
else
{System.out.println(str+”日在晒网”+”距离开始日总天数为:”+SumDay(y,m,d)+”天”);
bw.write(str+”在晒网”+”距离开始日总天数为:”+SumDay(y,m,d)+”天”);
bw.newLine();}
}
br.close();
bw.close();
}

这里写代码片public static int Thisyearday(int y,int m,int d){
        int  i,sum=0;
        for(i=1;i<m;i++)//计算当前年份的总天数
        {
            switch(i){
            case 1:sum+=31;break;
            case 2:{if((i%4==0&&i%100!=0)||i%400==0)
                sum+=29;
            else {sum+=28;}
            };break;
            case 3:sum+=31;break;
            case 4:sum+=30;break;
            case 5:sum+=31;break;
            case 6:sum+=30;break;
            case 7:sum+=31;break;
            case 8:sum+=31;break;
            case 9:sum+=30;break;
            case 10:sum+=31;break;
            case 11:sum+=30;break;
            case 12:sum+=31;break;
            }
        }
        sum+=d;
        return sum;
    }
    public static int SumDay(int y,int m,int d){
        int i,sum=0,sumday=0;
        for(i=2010;i<y;i++)//计算相差整年的总天数
        {
            if((i%4==0&&i%100!=0)||i%400==0)
            {sum+=366;}
            else{sum+=365;}
        }
            sumday=sum+Thisyearday(y,m,d)-1;
      return  sumday;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值