UT源码 149

(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 }
 
  

 

 

你可能感兴趣的:(UT源码 149)