2)NextDate函数问题
NextDate函数说明一种复杂的关系,即输入变量之间逻辑关系的复杂性
NextDate函数包含三个变量month、day和year,函数的输出为输入日期后一天的日期。 要求输入变量month、day和year均为整数值,并且满足下列条件:
条件1 1≤ month ≤12 否则输出,月份超出范围
条件2 1≤ day ≤31 否则输出,日期超出范围
条件3 1912≤ year ≤2050 否则输出:年份超出范围
String nextdate(m,d,y)
注意返回值是字符串。
程序要求:
1)先显示“请输入日期”
2)不满足条件1,返回:“月份超出范围”;不满足条件2,返回:“日期超出范围”;不满足条件3,返回:“年份超出范围”;
3)条件均满足,则输出第二天的日期:格式“****年**月**日”(如果输入2050年12月31日,则正常显示2051年1月1日)
直到输入 -1,程序退出。
package test1; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Scanner; public class Test { public static int year; public static int month; public static int day; public static void main(String[] args) throws Exception { String[] input = { "输入年 :", "输入月 :", "输入日 :" }; while(true){ System.out.println("请输入日期:"); Scanner sc = new Scanner(System.in); year = input(input[0], sc, 0); month = input(input[1], sc, 1); day = input(input[2], sc, 2); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, month - 1); calendar.set(Calendar.DATE, day + 1); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); System.out.print("第二题日期为:"); System.out.println(sdf.format(calendar.getTime())); System.out.print("输入‘-1’退出,其他继续:"); String T=sc.nextLine(); if(T.equals("-1")){ return ; } } } public static int input(String message, Scanner sc, int index) { while (true) { System.out.print(message); String str = sc.nextLine(); try { int result = Integer.parseInt(str); if (index == 0 && !(result >= 1920 && result <= 2050)) { System.out.println("年份超出范围"); continue; } if (index == 1 && !(result >= 1 && result <= 12)) { System.out.println("月份超出范围"); continue; } if (index == 2) { int end = endDay(year,month); if (!(result >= 1 && result <= end)) { System.out.println("日期超出范围"); continue; } } return result; } catch (Exception e) { System.out.println("input error!"); } } } public static int endDay(int year, int month) { Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, month); c.set(Calendar.DATE, 0); return c.get(Calendar.DATE); } }