求下一天:
输入年月日的值(均为整型数),输出该日期的下一天。 其中:年份的合法取值范围为[1820,2020] ,月份合法取值范围为[1,12] ,日期合法取值范围为[1,31] 。 注意:不允许使用Java中和日期相关的类和方法。
要求:Main类中必须含有如下方法,签名如下:
public static void main(String[] args);//主方法
public static boolean isLeapYear(int year) ;//判断year是否为闰年,返回boolean类型
public static boolean checkInputValidity(int year,int month,int day);//判断输入日期是否合法,返回布尔值
public static void nextDate(int year,int month,int day) ; //求输入日期的下一天
输入格式:
在一行内输入年月日的值,均为整型数,可以用一到多个空格或回车分隔。
输出格式:
当输入数据非法及输入日期不存在时,输出“Wrong Format”;
当输入日期合法,输出下一天,格式如下:Next date is:年-月-日
输入样例1:
在这里给出一组输入。例如:
2020 3 10
输出样例1:
在这里给出相应的输出。例如:
Next date is:2020-3-11
输入样例2:
在这里给出一组输入。例如:
2025 2 10
输出样例2:
在这里给出相应的输出。例如:
Wrong Format
import java.util.Scanner;
public class Main {
public static boolean isLeapYear(int year) {//判断是否闰年
boolean isLeapYear = (year % 4 == 0 && year % 100 !=0 )||year % 400 == 0;
return isLeapYear;
}
public static boolean checkInputValidity(int year,int month,int day) {
int[] aa=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(year))
aa[2] = 29;
boolean checkInputValidity = (year>=1820&&year<=2020&&month>0&&month<=12&&day<=aa[month]&&day>0);
return checkInputValidity;
}
public static void nextDate(int year,int month,int day) {
//求下一天注意夸年月以及特殊月份以及闰年和平年的二月不同天数
int[] aa=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(year))
aa[2] = 29;
int a = 0,b = 0,c = 0;
if(checkInputValidity(year,month,day)) {
if(month==12) {
if(day==aa[month]) {
a = year+1;
b = 1;
c = 1;}
if(day>0&&day<aa[month])
{a = year;
b = month;
c =day +1;
}
}
if(month<12) {
if(day==aa[month]) {
a = year;
b = month + 1;
c = 1;}
if(day>0&&day<aa[month])
{a = year;
b = month;
c = day+1;
}
}
System.out.println("Next date is:"+a+"-"+b+"-"+c);
}
else System.out.println("Wrong Format");
}
public static void main(String[] args) {
Scanner LJY = new Scanner(System.in);
Main ljy = new Main();
int year = LJY.nextInt();
int month = LJY.nextInt();
int day = LJY.nextInt();
ljy.nextDate(year,month,day);
}
}
求下N天就考虑特殊月份以及天数大致原理和求下一天相似
import java.util.Scanner;
public class Main {
public static boolean isLeapYear(int year) {
boolean isLeapYear = (year % 4 == 0 && year % 100 !=0 )||year % 400 == 0;
return isLeapYear;
}
public static boolean checkInputValidity(int year,int month,int day,int n) {
int[] aa=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(year))
aa[2] = 29;
boolean checkInputValidity = (year>=1820&&year<=2020&&month>0&&month<=12&&day<=aa[month]&&day>0&&Math.abs(n)<=10&&Math.abs(n)>=0);
return checkInputValidity;
}
public static void nextDate(int year,int month,int day,int n) {
int[] aa=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(year))
aa[2] = 29;
int a = 0,b = 0,c = 0;
if(checkInputValidity(year,month,day,n)) {
if (n==0) {
a = year;
b = month;
c = day;
}
if(month==12&&n>0) {
if(day-n<=aa[month]&&day-n>0) {
a = year;
b = month;
c = day-n;}
if(day-n<=aa[month]&&day-n<0) {
a = year;
b = month-1;
c = aa[b]-n+day;
}
if(day-n<=aa[month]&&day-n==0) {
a = year;
b = month-1;
c = aa[b]-n+day;
}
}
if(month==12&&n<0) {
if(day-n>aa[month]) {
a = year +1;
b = 1;
c =day - n -aa[month];
}
if(day-n<=aa[month]) {
a = year;
b = month;
c =day - n;
}
}
if(month>1&&month<12&&n>0) {
if(day-n<=aa[month]&&day-n>0) {
a = year;
b = month;
c = day-n;}
if(day-n<=aa[month]&&day-n<0) {
a = year;
b = month-1;
c = aa[b]-n+day;
}
if(day-n<=aa[month]&&day-n==0) {
a = year;
b = month-1;
c = aa[b]-n+day;
}
}
if(month<12&&month>1&&n<0) {
if(day-n>aa[month]) {
a = year;
b = month+1;
c =day - n -aa[month];
}
if(day-n<=aa[month]) {
a = year;
b = month;
c =day - n;
}
}
if(month == 1&&n>0) {
if(day-n<=aa[month]&&day-n>0) {
a = year;
b = month;
c = day-n;
}
if(day-n<=aa[month]&&day-n<0) {
a = year-1;
b = 12;
c = aa[b]-n+day;
}
if(day-n<=aa[month]&&day-n==0) {
a = year-1;
b = 12;
c = aa[b]-n+day;
}
}
if(month==1&&n<0) {
if(day-n>aa[month]) {
a = year;
b = month+1;
c =day - n -aa[month];
}
if(day-n<=aa[month]) {
a = year;
b = month;
c =day - n;
}
}
System.out.println(n+" days ago is:"+a+"-"+b+"-"+c);
}
else System.out.println("Wrong Format");
}
public static void main(String[] args) {
Scanner LJY = new Scanner(System.in);
Main ljy = new Main();
int year = LJY.nextInt();
int month = LJY.nextInt();
int day = LJY.nextInt();
int n = LJY.nextInt();
ljy.nextDate(year,month,day,n);
}
}