JAVAの小さな練習

3つのJavaクラスしか受講しなかったMengxinXiaobaiによって書かれた古典的な3日間の釣りプログラム

##最初のステートメント:

本人小白,第一次写博客,大佬们请多担待:

##問題の説明:「3日間の釣りと2日間の網の乾燥」という中国のことわざがあります。2010年1月1日から「3日間の釣りと2日間の網の乾燥」を開始し、将来のある日に「釣り」と「網の養生」のどちらを行うかを尋ねた。

##アイデアの解決:最初に問題を分析します。

  1. まず、うるう年かどうかを判断する関数を記述します
  2. 後続の計算を容易にするために、ループによって2010年からキー付き年(キー付き年を含まない)までのうるう年がいくつあるかを調べます。
  3. キー付き年がうるう年であるかどうかについて2つの配列を作成し、要素はうるう年とフラット年の各月の日であり、配列を操作してキー付き年の日数の累積を完了します(つまり、 1から(月-1))
  4. 2010年1月1日から入力日までの合計日数を計算します
  5. 合計日数の残りの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();
			

	}

}

##結果は以下の通りです:
ここに画像の説明を挿入
ご覧いただきありがとうございます〜

おすすめ

転載: blog.csdn.net/qq_54141095/article/details/115092092