UT源码_161
(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 test1; 2 import java.util.Scanner; 3 public class Test1 { 4 public static void main(String[] args){ 5 int year; 6 int month; 7 int day; 8 while(true){ 9 10 System.out.println("请输入日期:"); 11 Scanner sc = new Scanner(System.in); 12 System.out.print("年:"); 13 year = sc.nextInt(); 14 System.out.print("月:"); 15 month=sc.nextInt(); 16 System.out.print("日:"); 17 day=sc.nextInt(); 18 if(year>2050||year<1912) 19 { 20 System.out.println("年份超出范围!\n"); 21 continue; 22 } 23 if(month>12||month<1) 24 { 25 System.out.println("月份超出范围!\n"); 26 continue; 27 28 } 29 if(day>31||day<1) 30 { 31 System.out.println("日期超出范围!\n"); 32 continue; 33 } 34 String date=NextDay(year,month,day); 35 System.out.println(date); 36 System.out.println("\n是否继续?1 or -1:"); 37 sc.nextLine(); 38 String conn=sc.nextLine(); 39 if(conn.equals("-1")){ 40 System.out.println("感谢使用!"); 41 return; 42 } 43 } 44 } 45 static String NextDay(int year,int month,int day){ 46 if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) 47 { 48 if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 ||( month == 12 && day<31)) 49 { 50 if (day < 31) 51 day++; 52 else if (day == 31) 53 { 54 month++; 55 day =1; 56 } 57 58 } 59 else if (month == 12 && day == 31) 60 { 61 year++; 62 month = 1; 63 day = 1; 64 } 65 else if (month == 4 || month == 6 || month == 9 || month == 11) 66 { 67 if (day < 30) 68 day++; 69 else if (day == 30) 70 { 71 72 month++; 73 day = 1; 74 } 75 76 } 77 else if (month == 2) 78 { 79 if (day < 29) 80 day++; 81 else if (day == 29) 82 { 83 month++; 84 day = 1; 85 } 86 } 87 } 88 else 89 { 90 if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || (month == 12 && day < 31)) 91 { 92 if (day < 31) 93 day++; 94 else if (day == 31) 95 { 96 month++; 97 day = 1; 98 } 99 100 } 101 else if (month == 12 && day == 31) 102 { 103 year++; 104 month = 1; 105 day = 1; 106 } 107 else if (month == 4 || month == 6 || month == 9 || month == 11) 108 { 109 if (day < 30) 110 day++; 111 else if (day == 30) 112 { 113 114 month++; 115 day = 1; 116 } 117 118 } 119 else if (month == 2) 120 { 121 if (day < 28) 122 day++; 123 else if (day == 28) 124 { 125 month++; 126 day = 1; 127 } 128 } 129 } 130 131 return "第二天:"+year+"年"+month+"月"+day+"日"; 132 } 133 }