3つのJavaクラスしか受講しなかったMengxinXiaobaiによって書かれた古典的な3日間の釣りプログラム
##最初のステートメント:
本人小白,第一次写博客,大佬们请多担待:
##問題の説明:「3日間の釣りと2日間の網の乾燥」という中国のことわざがあります。2010年1月1日から「3日間の釣りと2日間の網の乾燥」を開始し、将来のある日に「釣り」と「網の養生」のどちらを行うかを尋ねた。
##アイデアの解決:最初に問題を分析します。
- まず、うるう年かどうかを判断する関数を記述します
- 後続の計算を容易にするために、ループによって2010年からキー付き年(キー付き年を含まない)までのうるう年がいくつあるかを調べます。
- キー付き年がうるう年であるかどうかについて2つの配列を作成し、要素はうるう年とフラット年の各月の日であり、配列を操作してキー付き年の日数の累積を完了します(つまり、 1から(月-1))
- 2010年1月1日から入力日までの合計日数を計算します
- 合計日数の残りの5日、つまり合計日数%5を求めます。残りの1、2、3を釣り、0、4を網の乾燥と判断することで、最終結果が得られます。
##フローチャート:
##ドライコード:
import java.util.Scanner;
public class TiaoshiPrj {
public static int year;
public int month;
public int day;
public int bennian;
public static int x;
static int count=0;
public void input() {
//输入函数
Scanner in = new Scanner(System.in); //定义scanner
boolean w=true;
while ( w ) {
System.out.println("请输入月:");
month = in.nextInt();
if (month<=0 || month>=13) {
System.out.println("输入不合法");
}
else w=false;
}
System.out.println("请输入日:");
day = in.nextInt();
}
public static boolean compar(int years) {
//判断是否是闰年
if((years%4==0&&years%100!=0)||(years%400==0)) {
//System.out.println("true");
return true;
}
//else System.out.println("false");
return false;
}
public static int numRunyear(int y) {
//闰年数量
year=y;
for ( int i=2010;i<y;i++ ) {
if (compar(i)) {
count+=1; //除本年外闰年个数的计数
}
}
//System.out.println(+count);
return count;
}
public int benNian() {
//计算本年整月的天数 *****本函数无误
int[] runmonth = {
31,29,31,30,31,30,31,31,30,31,30,31};
int[] pingmonth = {
31,28,31,30,31,30,31,31,30,31,30,31};
int sum=0;
if ( compar(year) ) {
//闰年
for (int j=0;j<month-1 ;j++)
sum+=runmonth[j];
bennian=sum;
//System.out.println("闰");
}
else {
//平年
for (int j=0;j<month-1 ;j++)
sum+=pingmonth[j];
bennian=sum;
//System.out.println("平");
}
//System.out.println("本年整月天数"+bennian);
return sum;
}
public void dayuShaiwang() {
int p=0;
int pingdays;
int rundays;
int numdays;
p=(year-2010)-count; //计算平年的个数
pingdays=p*365; //计算平年的总天数
rundays=count*366; //计算闰年的总天数
numdays=pingdays+rundays+benNian()+day; //总天数
//System.out.println("总天数"+numdays); //输出总天数
//if (((numdays%5)==0)&&((numdays%5)==4))
//System.out.println("晒网");
//else System.out.println("打鱼");
if (numdays%5 >= 1 && numdays%5 <= 3)
System.out.println("在打鱼!");
else
if (numdays%5 == 4 || numdays%5 == 0)
System.out.println("在晒网!");
}
public static void main(String[] args) {
TiaoshiPrj t = new TiaoshiPrj();
Scanner in = new Scanner(System.in);
boolean s=true;
while ( s ) {
System.out.println("请正确输入年");
t.numRunyear(in.nextInt());
if(year<2010){
//判断年份
System.out.println("输入不合法");
}
else s=false;
}
t.input();
t.benNian();
t.dayuShaiwang();
}
}
##結果は以下の通りです:
ご覧いただきありがとうございます〜