输入日期显示它的上一天日期
import java.util.Scanner;
public class PreDate {
public static int year = 0;
public static int month = 0;
public static int day = 0;
public static int T = 0;
public static int N = 0;
public static int M = 0;
private static Scanner input;
public static void main(String []args){
input = new Scanner(System.in);
System.out.println("日期:");
year = input.nextInt();
month = input.nextInt();
day = input.nextInt();
T = Judge();
while(T == 0 || year > 2017 || year < 1812 || day < 1 || day > 31 || month < 1 || month > 12){
System.out.println("输入有误!请重新输入:");
year = input.nextInt();
month = input.nextInt();
day = input.nextInt();
T = Judge();
}
do{
sub();
M = Judge();
}while(M == 0);
System.out.println("前一天日期为" + year + "." + month + "." + day);
}
public static int Judge(){
if(year % 100 == 0){
if(year %400 == 0){
N = 1;
}
}
else if(year % 4 == 0){
N = 1;
}
if(month == 4 || month == 6 || month == 9 || month == 11){
if(day < 1 || day > 30){
return 0;
}
else
return 1;
}
else if(month == 2){
if(N == 1){
if(day < 1 || day > 29){
return 0;
}
else
return 1;
}
else if(N == 0){
if(day < 1 || day > 28){
return 0;
}
else
return 1;
}
}
return 1;
}
public static void sub(){
day--;
if(day <= 0){
month --;
day = 31;
}
if(month <= 0){
year --;
month = 12;
}
}
}