Java教程

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

本文主要是介绍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%40&&year%100!=0&&month2&&day29){//当为润年的时候,二月有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();
	}

}
测试用例如下:

在这里插入图片描述

在这里插入图片描述

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

这篇关于java代码实现输入年月日,输出其后一天的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!