java代码实现输入年月日,输出其后一天

**

java代码实现输入年月日,输出其后一天

**
3.NextDate 函数包含三个变量:month 、 day 和 year ,函数的输出为输入日期后一天的日期。 例如,输入为 2018年1月 1日,则函数的输出为 2018年1月2日 。要求输入变量 month 、 day 和 year 均为整数值,并且满足下列条件: 1999≤year≤2050。
一、利用java代码实现:
需要考虑的情况:问题主要是对于输入一个年月日,输出它的后一天,这里考虑的情况分别如下所示:
1、该年是否为闰年:为闰年则对于二月这个特殊月,闰年为29天,平年为28天
2、输入的月份月大还是月小,若是月大则除去二月以外,月大有31天,月小有30天,例如输入2018年5月31号则后一天month=month+1,day=1,
2018年4月30号则后一天month=month+1,day=1;
3、输入的月是否为二月,若是二月例如2012年2月29日(闰年)后一天month=month+1;平年类似
4、输入的月份是否是12月,例如2018年12月31号则后一天为2019年1月1号
及year=year+1,month=1,day=1;

二、此题在主函数输入数据时要对年月日是否合法进行检测,月大不超过31天,月小不超过30天,对于闰年二月天数不超过29天,对于平年二月天数不超过28天。再就是对于年份的限制是在1999≤year≤2050。
NextDate函数中
对于传入的三个参数(year,month,day)要进行判断是否是闰年或平年,传入的月份月大还是月小,是否为二月,是否为12月份,以及天数进行判断(为什么要进行判断,因为在这函数中要输出你输入年月日的后一天,所以多种情况要考虑好)若对于不少出现在边界处的年月日例如:2018年2月2号输出后一天只需要day=day+1;
(不是处于边界情况下)**
本人java实现的代码如下:

package practical;
import java.util.Scanner;
public class LaterDay {
	public static void NextDate(int year,int month,int day) {
	 if(year%4==0&&year%100!=0&&month==2&&day==29){//当为润年的时候,二月有29天
			month=month+1;
			day=1;
			System.out.printf("%d",year);
			System.out.printf("年");
			System.out.printf("%d",month);
			System.out.printf("月");
			System.out.printf("%d",day);
			System.out.printf("日");
	 }
	else if(month==2&&day==28){//当该年为平年的时候,二月为28天,输出日期后一天,月份加1,将具体几号置为1
			month=month+1;
			day=1;
			System.out.printf("%d",year);
			System.out.printf("年");
			System.out.printf("%d",month);
			System.out.printf("月");
			System.out.printf("%d",day);
			System.out.printf("日");
			
	}
	else if(month==12&&day==31) {//当输入月份为12月31日此情况下要输出后一天则要将其年份加1,月份和日期号置为1
		    year=year+1;
		    month=1;
		    day=1;
		    System.out.printf("%d",year);
			System.out.printf("年");
			System.out.printf("%d",month);
			System.out.printf("月");
			System.out.printf("%d",day);
			System.out.printf("日");
		}
	 //当输入月大,日子为最大31号,则执行月份+1,日期号置为1
	else if(month==1&&day==31||month==3&&day==31||month==5&&day==31||month==7&&day==31||month==8&&day==31||month==10&&day==31 ){
		    month=month+1;
		    day=1;
		    System.out.printf("为什么输出");
		    System.out.printf("%d",year);
			System.out.printf("年");
			System.out.printf("%d",month);
			System.out.printf("月");
			System.out.printf("%d",day);
			System.out.printf("日");
		}
	else if(month==4&&day==30||month==6&&day==30||month==9&&day==30||month==11&&day==30){
	    	 month=month+1;
			 day=1;
			 System.out.printf("%d",year);
			 System.out.printf("年");
			 System.out.printf("%d",month);
			 System.out.printf("月");
			 System.out.printf("%d",day);
			 System.out.printf("日");
		}
	else {   
		     day=day+1;
		     System.out.printf("%d",year);
			 System.out.printf("年");
			 System.out.printf("%d",month);
			 System.out.printf("月");
			 System.out.printf("%d",day);
			 System.out.printf("日");
	    }
	}
	public static void ErrorTip(int i) {//当输入年份月份日期号不正确的时候给出的提示
		 System.out.println("输入的整数不合法");
	}
	public static void main(String[] args) {//主函数
		Scanner scan=new Scanner(System.in);
		System.out.println("请输入年份");
		int year=scan.nextInt();
		if(year>1998&&year<2051) {
			System.out.println("请输入月份");
		}
		else {
		    ErrorTip(year);
		}
		int month=scan.nextInt();
		if(month>0&&month<13) {
			System.out.println("请输入具体几号");
		}
		else {
			ErrorTip(month);
		}
		int day=scan.nextInt();//输入天数
		if(year%4==0&&year%100!=0&&month==2)//当输入的年份该年为润年的情况下
		{ 
			 if(day>0&&day<30)
				 NextDate(year,month,day);
			 else 
				 ErrorTip(day);		  
		}
		else if(month==2)  {//输入的该年为平年的情况如下
			 if(day>0&&day<29)
				NextDate(year,month,day);
			 else 
			    ErrorTip(month);
			  }
		else if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) {//月大则一个月有31天
				    if(day>0&&day<32)
					  NextDate(year,month,day);
					else
					ErrorTip(day) ;
					}
			else {//月小则一月有30天二月份除外
				    if(day>0&&day<31)
				      NextDate(year,month,day);
				    else
				     ErrorTip(day);
			 }
		scan.close();
		}
}

测试用例如下:

在这里插入图片描述

在这里插入图片描述

日常记录分享,写的不好的地方请多指教。

  • 15
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
下面是一个 Python 实现的 NextDate() 函数,用于计算输入日期的下一天日期: ```python def NextDate(month, day, year): # 检查输入是否合法 if not (1 <= month <= 12 and 1 <= day <= 31 and 1900 <= year <= 2100): return "Invalid input" # 计算下一天日期 if month in (4, 6, 9, 11): if day == 30: month += 1 day = 1 else: day += 1 elif month == 2: if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0): if day == 29: month += 1 day = 1 else: day += 1 else: if day == 28: month += 1 day = 1 else: day += 1 else: if day == 31: if month == 12: year += 1 month = 1 day = 1 else: month += 1 day = 1 else: day += 1 return f"{month}/{day}/{year}" ``` 该函数接受三个参数 `month`, `day`, `year`,分别表示输入日期的月、日、年。如果输入日期不合法,函数会返回字符串 `"Invalid input"`。否则,函数会根据输入日期计算下一天日期,并返回一个字符串表示,格式为 `month/day/year`。 在实现过程中,我们使用了一些常见的日期计算规则,例如: - 对于 4、6、9、11 月,如果日期为 30 号,则下一天为下一个月的 1 号。 - 对于 2 月,需要特别处理闰年和非闰年的情况。 - 对于 1、3、5、7、8、10、12 月,如果日期为 31 号,则下一天为下一个月的 1 号。 - 如果输入日期为 12 月 31 号,则下一天为明年的 1 月 1 号。 注意,这只是一个简单的实现示例,实际应用中可能需要考虑更多的日期计算规则和边界情况。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值