(2)NextDate函数问题
NextDate函数说明一种复杂的关系,即输入变量之间逻辑关系的复杂性
NextDate函数包含三个变量month、day和year,函数的输出为输入日期后一天的日期。 要求输入变量month、day和year均为整数值,并且满足下列条件:
条件1 1≤ month ≤12 否则输出,月份超出范围
条件2 1≤ day ≤31 否则输出,日期超出范围
条件3 1912≤ year ≤2050 否则输出:年份超出范围
String nextdate(int m,int d,int y)
注意返回值是字符串。
程序要求:
1)先显示“请输入日期”
2)不满足条件1,返回:“月份超出范围”;不满足条件2,返回:“日期超出范围”;不满足条件3,返回:“年份超出范围”;如果出现多个不满足,以最先出现不满足的错误返回信息。
3)条件均满足,则输出第二天的日期:格式“****年**月**日”(如果输入2050年12月31日,则正常显示2051年1月1日
1 package exam1; 2 3 import java.util.Scanner; 4 5 6 public class test01 { 7 static String NextDate(int year,int month,int day){ 8 if(((year%4==0&&year%100!=0)||year%400==0)&&month==2) 9 { 10 if(day==29){day=1;month++;} 11 else day++; 12 } 13 else if(month==12) 14 { 15 if(day==31){ 16 day=1; 17 month=1; 18 year++; 19 } 20 else day++; 21 } 22 else if(month==1||month==3||month==5||month==7||month==8||month==10) 23 { 24 if(day==31) 25 { 26 day=1; 27 month++; 28 } 29 else day++; 30 } 31 else if(month==2||month==4||month==6||month==11||month==12&&day==30) 32 { 33 day=1; 34 month++; 35 } 36 else day++; 37 String date="后一天的日期是:"+year+"年"+month+"月"+day+"日"; 38 return date; 39 } 40 41 public static boolean check(int y,int m,int d){ 42 if(y<1915||y>2050){ 43 System.out.println("年份超出范围"); 44 return false; 45 } 46 else if(d<1||d>31||(m==2&&d>29)){ 47 System.out.println("日期超出范围"); 48 return false; 49 } 50 else if(m<1||m>12){ 51 System.out.println("月份超出范围"); 52 return false; 53 } 54 else { 55 return true; 56 } 57 } 58 59 //main方法 60 public static void main(String[] args) { 61 while(true){ 62 System.out.println("----请输入日期---"); 63 Scanner scanner=new Scanner(System.in); 64 System.out.print("请输入年份:"); 65 int year=scanner.nextInt(); 66 System.out.print("请输入月份:"); 67 int month=scanner.nextInt(); 68 System.out.print("请输入日期:"); 69 int day=scanner.nextInt(); 70 if(check(year, month, day)){ 71 System.out.println(NextDate(year, month, day)); 72 } 73 } 74 } 75 76 }