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