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+"日"; } }