欢迎浏览新人不吃葱花香菜的小白菜的博客
注册CSDN也有一段时间了,但是对这个的关注却很少,这次也刚好是一个逼自己锻炼的机会。希望可以通过自己的博客来记录自己的“成长历程”!
题目:
中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言/java/python实现程序解决问题。
要求:
基本要求:1.程序风格良好(使用自定义注释模板),提供友好的输入输出。
提高要求:1.输入数据的正确性验证。
2.使用文件进行数据测试。如将日期 20100101 20111214 等数据保存在in.txt文件中,程序读入in.dat文件进行判定,并将结果输出至out.txt文件。
总结:
这次只完整解决了基本要求和提高要求中的第一个。对输入输出流这方面理解还是不够透彻,对文件输入输出这块儿只完成了输出部分,输入部分虽然明白是怎样的道理,就是写不出来,代码改不过来。希望后面可以解决
在解决过程中,采用了string.split 方法分隔字符串。用interger.parseInt将String字符类型数据转换为Integer整型数据。
程序流程图:
这里写代码片
package shoter;
import java.io.*;
import java.util.Scanner;
public class Main39 {
public static void main (String args[]) throws Exception{
System.out.println(“请输入一个日期,格式如:2010/01/01”);
Scanner sc=new Scanner(System.in);
// System.setIn(new FileInputStream(“in.txt”));
int d[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
while (sc.hasNext()){
String s=sc.next();
int days=0;
int year,month,day;
String[] str=s.split("/");//使用split方法分隔字符串
year=Integer.parseInt(str[0]);//将String字符类型数据转换为Integer整型数据
month=Integer.parseInt(str[1]);
day=Integer.parseInt(str[2]);
System.setOut(new PrintStream(“out.txt”));
if(year<2010 || month<1 ||month>12 || day<0||day>31){
System.out.println(“您输入的数据不符合要求,请重新输入”);
continue;//只跳出本次循环,不影响后续操作
}
if(year%4000||(year%100!=0&&year%40)&&month>2){
days++;
}
这里写代码片
for(int i=2010;i<year;i++){
days=days+365;
if(year%400==0||(year%100!=0&&year%4==0)&&month>2){
days++;
}
}//年循环累计
for(int i=0;i<month;i++){
days+=d[i];
}//月循环累计
days+=day;//天循环累计
System.setOut(new PrintStream("out.txt"));
// BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
if(days%5==1 || days%5==2 || days%5==3 ){
System.out.println("打渔");
}
else {
System.out.println("晒网");
}
}
sc.close();
}
}
测试结果: