JAVA小实践

只上了三节Java课的萌新小白写的经典三天打鱼两天晒网程序

##首先声明:

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

##问题描述: 中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。

##解决思路: 先将问题分解来看;

  1. 首先写一个判断是否是闰年的函数出来
  2. 通过循环找出从2010年到键入年份(不包括键入年份)之间有多少个闰年,便于后续计算
  3. 对键入年份是否是闰年做出两个数组 ,元素为闰年和平年的每个月份的天数,并对数组进行操作完成键入年份的整月份(即从1~(month-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