(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 com.test; 2 import java.util.Scanner; 3 public class TestPractice { 4 /*闰年判断 5 * 返回值为true:该年为闰年 6 * 返回值为false:该年为平年 7 */ 8 public static boolean isLeapYear(int y) 9 { 10 if((y % 4 == 0 && y % 100 != 0)||y % 400 == 0) 11 return true; 12 else 13 return false; 14 } 15 16 //下一天判断,返回值为下一天的日期,格式是xxxx年x月x日 17 public static String NextDate(int y, int m, int d) 18 { 19 //判断年份是否超出范围 20 if(1912 <= y && y <= 2050) 21 { 22 //判断月份是否超出范围 23 if(1 <= m && m <= 12) 24 { 25 //大月判断,每个月只有31天 26 if(m == 1||m == 3||m == 5||m == 7||m == 8||m ==10||m == 12) 27 { 28 if(1 <= d && d < 30) 29 return y+"年"+m+"月"+(d+1)+"日"; 30 else if(d == 31) 31 { 32 if(m == 12) 33 return (y+1)+"年1月1日"; 34 else 35 return y+"年"+(m+1)+"月1日"; 36 } 37 else 38 return "日期超出范围"; 39 } 40 //小月判断,每个月只有30天 41 else if(m == 4||m == 6||m == 9||m == 11) 42 { 43 if(1 <= d && d < 29) 44 return y+"年"+m+"月"+(d+1)+"日"; 45 if(d == 30) 46 return y+"年"+(m+1)+"月1日"; 47 else 48 return "日期超出范围"; 49 } 50 /*二月份在平年和闰年天数不同 51 * 所以需要分开统计 52 * */ 53 else 54 { 55 if(isLeapYear(y)) 56 { 57 if(1 <= d && d < 28) 58 return y+"年"+m+"月"+(d+1)+"日"; 59 if(d == 29) 60 return y+"年"+(m+1)+"月1日"; 61 else 62 return "日期超出范围"; 63 } 64 else 65 { 66 if(1 <= d && d < 27) 67 return y+"年"+m+"月"+(d+1)+"日"; 68 if(d == 28) 69 return y+"年"+(m+1)+"月1日"; 70 else 71 return "日期超出范围"; 72 } 73 } 74 75 } 76 else 77 return "月份超出范围"; 78 } 79 else 80 { 81 return "年份超出范围"; 82 } 83 84 } 85 86 public static void main(String[] args) { 87 Scanner scan = new Scanner(System.in); 88 while(true) 89 { 90 System.out.print("请输入日期:"); 91 int y = scan.nextInt(); 92 if(y == -1) break; 93 int m = scan.nextInt(); 94 int d = scan.nextInt(); 95 System.out.println(NextDate(y,m,d)); 96 } 97 } 98 99 }