计算输入日期的前一天
具体功能需求:
1)程序有3个输入变量year,month,day,分别表示输入日期的年份、月份、日,其中year,month,day均定义为整数值,且满足:1≤month≤12,1≤day≤31,1900≤year≤2019。通过程序可以输出该输入日期在日历上的前一天。
例如:输入2021,3,1,则该程序的输出为:2021,2,28。
import java.util.Scanner;
/**
* @program: softwareTest
* @description: 计算上一天
* @author: KaXi
* @create: 2021-04-16 10:27
**/
public class EveDay {
public static void main(String args[]){
//用两个数组存储闰年和非闰年的天数
int a[]= {31,29,31,30,31,30,31,31,30,31,30,31};//闰年日期
int b[]= {31,28,31,30,31,30,31,31,30,31,30,31};//非闰年日期
//创建输入对象
Scanner input = new Scanner(System.in);
//依次输入年月日
System.out.print("请输入年份:");
int year = input.nextInt();
System.out.println("请输入月份");
int month=input.nextInt();
System.out.println("请输入天数");
int day=input.nextInt();
//判断日期是否输入正规
if (year<1900||year>2019){
System.out.println("请输入正确的年份!!!");
return;
}
if (month<1||month>12){
System.out.println("请输入正确的月份!!!");
return;
}
if(day<1||day>31){
System.out.println("请输入正确的日期!!!");
return;
}
if (month==4||month==6||month==9||month==11){
if (day==31){
System.out.println("请输入正确的日期!!!");
return;
}
}
//判断是闰年还是非闰年,后面会用到
boolean flag = (year%4==0 && year%100!=0 || year%400==0);
//判断闰年和平年二月的日期是否输入正确
if (flag){
if (month==2) {
if (day>29){
System.out.println("请输入正确的日期!!!");
return;
}
}
}else {
if (month==2) {
if (day>28){
System.out.println("请输入正确的日期!!!");
return;
}
}
}
//计算输入日期的前一天
if (day==1){ //如果是每个月的一号
//如果是3月一号
if (month==3){
if(flag){
System.out.println("上一天是"+year+"年"+"2月"+"29号");
}else {
System.out.println("上一天是"+year+"年"+"2月"+"28号");
}
}else{
if (month==1){
System.out.println("上一天是"+(year-1)+"年"+"12月"+"31号");
}else {
month--;
if (month==1||month==3||month==5||month==7||month==8||month==10||month==12){
day=31;
}else{
day=30;
}
System.out.println("上一天是"+year+"年"+month+"月"+day+"号");
}
}
}else {
System.out.println("上一天是"+(year)+"年"+month+"月"+(day-1)+"号");
}
}
}