前一日函数 PreDate 是 NextDate 的逆函数,即给定一个月份、日期、年,会返回前一天的日期。
年的取值在 1812 年到 2017 年。
日的取值在 1 日到 31 日之间。
月的取值在 1 到 12 月之间
代码实现如下:
import java.util.Scanner;
public class PreDate {
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入年 月 日:");
int year = sc.nextInt();
int month=sc.nextInt();
int day=sc.nextInt();
if(year<1812||year>2017||month<1||month>12||day<1||day>31){
System.out.print("输入不合法!");
}
//年份发生改变的情况
if(month==1&&day==1){
year=year-1;
month=12;
day=31;
}
//月份发生改变的情况
else if(month!=1&&day==1){
if(month==2||month==4||month==6||month==8||month==9||month==11){
month=month-1;
day=31;
}
else if(month==5||month==7||month==10||month==12){
month=month-1;
day=30;
}
else {
if(((year%4==0)&&(year%100>0))||((year%100==0)&&(year%400==0))){
month=month-1;
day=29;
}
else {
month=month-1;
day=28;
}
}
}
//只涉及day的变换
else {
day=day-1;
}
System.out.print(year+" "+month+" "+day);
}
}