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
    评论
以下是实现输入年月日输出距今天还有多少天,星期几和是否为公历节日的 Java 代码: ```java import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; public class DaysUntilToday { public static void main(String[] args) { // 输入年月日 int year = 2022; int month = 1; int day = 1; LocalDate inputDate = LocalDate.of(year, month, day); LocalDate today = LocalDate.now(); // 计算距今天还有多少天 long daysUntilToday = ChronoUnit.DAYS.between(inputDate, today); System.out.println("距今天还有 " + daysUntilToday + " 天"); // 计算星期几 String dayOfWeek = inputDate.getDayOfWeek().toString(); System.out.println("星期" + dayOfWeek.substring(0, 1) + dayOfWeek.substring(1).toLowerCase()); // 判断是否为公历节日 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMdd"); String monthDay = inputDate.format(formatter); switch (monthDay) { case "0101": System.out.println("元旦节"); break; case "0214": System.out.println("情人节"); break; case "0401": System.out.println("愚人节"); break; case "0501": System.out.println("劳动节"); break; case "0611": System.out.println("618购物节"); break; case "1001": System.out.println("国庆节"); break; case "1224": case "1225": System.out.println("圣诞节"); break; default: System.out.println("不是公历节日"); break; } } } ``` 以上代码使用了 Java 8 中的 `LocalDate` 类来处理日期,使用 `ChronoUnit.DAYS.between()` 方法计算天数差距,使用 `getDayOfWeek()` 方法计算星期几,使用 `DateTimeFormatter.ofPattern()` 方法格式化月日,最后使用 `switch` 语句判断是否为公历节日。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值