UT源码101


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


public
class NextDateTest { public static void main(String[] args) { // TODO Auto-generated method stub int month,year,day; Scanner scan=new Scanner(System.in); while(true){ //输入日期 System.out.println("请输入日期:"); System.out.print("Year="); year=scan.nextInt(); System.out.print("Month="); month=scan.nextInt(); System.out.print("Day="); day=scan.nextInt(); if(checkDate(year, month, day)){ //输出下一天的日期 System.out.println(nextDate(year, month, day)); } } } //检查日期是否合法 public static boolean checkDate(int y,int m,int d){ if(y<1915||y>2050){ System.out.println("年份超出范围"); return false; } else if(d<1||d>31){ System.out.println("日期超出范围"); return false; } else if(m<1||m>12){ System.out.println("月份超出范围"); return false; } else { return true; } } //NextDate函数 public static String nextDate(int y,int m,int d){ //判断是否是闰年以及二月的最后一天的情况 if((d==28&&m==2&&!(y%4==0&&y%100!=0||y%400==0))||(d==29&&m==2&&(y%4==0&&y%100!=0||y%400==0))){ d=1; m=3; } //其他月份最后一天的情况 else if((d==30&&(m==4||m==6||m==9||m==11))||(d==31&&(m==1||m==3||m==5||m==7||m==8||m==10||m==12))){ d=1; m++; } else d++; if(m>12){ m=1; ++y; } return "NextDate:"+y+"年"+m+"月"+d+"日"; } }

 

posted @ 2017-03-10 19:53  xwhisper  阅读(302)  评论(0编辑  收藏  举报