歡迎瀏覽新人不喫蔥花香菜的小白菜的博客
註冊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();
}
}
測試結果: