用JAVA实现“三天打鱼,俩天晒网”

用JAVA实现“三天打鱼,俩天晒网”

题目为

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

问题分析

输入:日期
输出:在打鱼/晒网
分析:需要设计方法来将输入的日期转换并计算,并输出结果。

概要设计

流程图

//构造方法
	public date(int year,int month,int day) {    		
		this.year=year;
		this.month=month;
		this.day=day;

主要代码

//date.java

import java.util.Scanner;

public class date {
	int year,month,day;          //定义变量

	public date(int year,int month,int day) {    //构造方法
		this.year=year;
		this.month=month;
		this.day=day;
	
	}

	public date() {					//无参构造

}

	public void difference(date date1,date date2) {     //计算相差几天的算法

		System.out.println("三天捕鱼,俩天晒网");
		System.out.println("请输入要查询的日期");
		System.out.println("(例如:20100102)");
		Scanner sc=new Scanner(System.in);         //运用Scanner类,获取输入的数字
		int dates=sc.nextInt();
		date2.year=(int)dates/10000;               //将数字进行筛选选出年/月/日
		date2.month=(int)((dates%10000)/100);
		date2.day=(int)dates%100;
		int num=0;						//累加器
												
		if(date2.year>=date1.year&&date2.month<13&&date2.day<32)       //判断输入的日期是否合法
		{
			for(int i=date1.year;i<date2.year;i++)			//根据年这个单位进行筛选,看看差几年,是否为闰年
			{
				int ayear=365;
				if(i%4==0&&i%100!=0)
					ayear=366;
				if(i%400==0)
					ayear=365;
				num=num+ayear;
			}
			for(int month=1;month<date2.month;month++)     //差几月,选择结构来求出每个月有几天
				{
		
					int days=0;
					switch(month) {
					case 1:
					case 3:
					case 5:
					case 7:
					case 8:
					case 10:
					case 12:
						days=31;		//大月
						break;
					case 4:
					case 6:
					case 9:
					case 11:
						days=30;		//小月
						break;
			case 2: 							//2月特殊对待, 分平闰年
				if(year%4==0&&year%100!=0)
					days=29;
				else
					days=28;
				if(year%400==0)
					days=29;
				break;
			default:

				break;
				
			}
			num=num+days;
		}
			num+=date2.day-date1.day;			//算出差几日
			if(num<0)
				System.out.println("输入的日期错误,请重新输入");      //最后再次确定输出结果是否为正数,是否合法
			else
				
				System.out.println("查询的日期和2010年1月1日相差"+num+"天");    
				switch((num+1)%5) {            				//选择结构来判断是在捕鱼还是晒网
				case 1:
				case 2:
				case 3:
					System.out.println("这天在捕鱼");
					System.out.println();
					System.out.println();
					break;
				case 0:
				case 4:
					System.out.println("这天在晒网");
					System.out.println();
					System.out.println();
					System.out.println();
					break;
				}
				
		}
		else
			System.out.println("输入的日期错误");

	}
	
}
//Main.java

public class Main{	
	

	public static void main(String arg[]) {
		
	while(true) {						//无限循环
		
	
	date date1=new date();
	date1.year=2010;					//  对date1的值进行初始化
	date1.month=01;
	date1.day=01;
	date date2=new date();			
	
	date1.difference(date1,date2);
	}
	}
}

初来乍到,多多关照 [抱拳]

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值