NextDate函数的设计、实现和测试
函数有3个参数:月份、日期和年;它们都具有整数值,且满足以下条件:
1<=月份<=12
1<=日期<=31
1812<=年<=2012
  函数返回输入日期之后的那个日期;如果输入无效值,如2000年6月31日,输出指示相应变量超出取值范围;对于无效的日月年组合,如“1999年13月32日”输出“无效输入日期”。

解决方案 »

  1.   

    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;public class CSDN1 {

    private static String nextDate(int year,int month,int day)
    {
    String strYear = Integer.toString(year);
    String strMonth = Integer.toString(month);
    String strDay = Integer.toString(day);
    if(year < 1812 || year > 2012)
    {
    System.out.println("Wrong Year");
    return "Error";
    }

    if(month < 1 || month > 12)
    {
    System.out.println("Wrong mont");
    return "Error";
    }
    if(day < 1 || day > 31)
    {
    System.out.println("Wrong mont");
    return "Error";
    }
    String time = strYear+strMonth + strDay;
    DateFormat df = new SimpleDateFormat("yyyyMMdd");
    Calendar cal = Calendar.getInstance();
    try {
    cal.setTime(df.parse(time));
    } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    cal.add(Calendar.DATE, 1);// 月份加1
    return df.format(cal.getTime()).toString();
    }
    public static void main(String[] args) {
    String strtime= nextDate(2002,10,25);
    System.out.println(strtime);
    }
    }
      

  2.   

    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;public class CSDN1 {private static String nextDate(int year,int month,int day)
    {
    String strYear = Integer.toString(year);
    String strMonth = Integer.toString(month);
    String strDay = Integer.toString(day);
    if(year < 1812 || year > 2012)
    {
    System.out.println("Wrong Year");
    return "Error";
    }if(month < 1 || month > 12)
    {
    System.out.println("Wrong mont");
    return "Error";
    }
    if(day < 1 || day > 31)
    {
    System.out.println("Wrong mont");
    return "Error";
    }
    String time = strYear+strMonth + strDay;
    DateFormat df = new SimpleDateFormat("yyyyMMdd");
    Calendar cal = Calendar.getInstance();
    try {
    cal.setTime(df.parse(time));
    } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    cal.add(Calendar.DATE, 1);// 日期加1
    return df.format(cal.getTime()).toString();
    }
    public static void main(String[] args) {
    String strtime= nextDate(2002,10,25);
    System.out.println(strtime);
    }
    }
      

  3.   

    不知道我写的是否符合要求
    class test{
    private static String nextDate(int year,int month,int day)
    {
    String strYear = Integer.toString(year);
    String strMonth = Integer.toString(month);
    String strDay = Integer.toString(day);
    if(year < 1812 || year > 2012)
    {
    System.out.println("无效输入日期");
    return "Error";
    }

    if(month < 1 || month > 12)
    {
    System.out.println("无效输入日期");
    return "Error";
    }
    if(day < 1 || day > 31)
    {
    System.out.println("无效输入日期");
    return "Error";
    }
    final int[] checkdate={31,28,31,30,31,30,31,31,30,31,30,31}; 
    if((day==29)&&(month==2)&&(((year%4==0)&&(year%100!=0))||(year%400==0)))
    {
    return strYear+"年"+strMonth+"月"+strDay+"日";
    }
    else
    {
    if(day<=checkdate[month-1])

    return strYear+"年"+strMonth+"月"+strDay+"日";
    else
    return "相应变量超出取值范围";
    }

    }
    public static void main(String[] args) {
    String strtime= nextDate(2000,2,29);
    System.out.println(strtime);
    }
    }有错误的地方,希望大家指正!
      

  4.   

    import java.text.*;
    import java.util.*;
    class datetest{
      private static String nextDate(int year,int month,int day){   
        if(year <1812 || year > 2012 || month < 1 || month > 12 ||day < 1 || day > 31){
           return "无效输入日期";
        }
        String stryear,strmonth,strday;
        stryear = Integer.toString(year);
        if(month<10)
         strmonth = "0"+Integer.toString(month);
        else
          strmonth = Integer.toString(month);
        if(day<10)
         strday = "0"+Integer.toString(day);
        else
          strday = Integer.toString(day);
        
        String strtime = stryear + strmonth + strday;
        DateFormat df = new SimpleDateFormat("yyyyMMdd");
        Calendar cal = Calendar.getInstance();
        try{
          Date dt = df.parse(strtime);
          if(!strtime.equals(df.format(dt)))
             return "相应变量超出取值范围";
          cal.setTime(df.parse(strtime));      
        }catch(ParseException e){
         e.printStackTrace();
        }
        cal.add(Calendar.DATE, 1);
        return df.format(cal.getTime()).toString();
      }
      public static void main(String[] args) {
     System.out.println(nextDate(2002,2,28));
    }  
    }  
    应该可以了,可能有更优化的方法。
      

  5.   

    花了两分钟,把寂寞浪子的程序改了改,应该解决问题了!但是看起来很笨,其实小鱼的方法挺好的,大家花时间看看吧
    class test{
    private static String nextDate(int year,int month,int day)
    {
    String strYear = Integer.toString(year);
    String strMonth = Integer.toString(month);
    String strDay = Integer.toString(day);
    if(year < 1812 || year > 2012)
    {
    System.out.println("无效输入日期");
    return "Error";
    }

    if(month < 1 || month > 12)
    {
    System.out.println("无效输入日期");
    return "Error";
    }
    if(day < 1 || day > 31)
    {
    System.out.println("无效输入日期");
    return "Error";
    }
    final int[] checkdate={31,28,31,30,31,30,31,31,30,31,30,31}; 
    if((day==28)&&(month==2)&&(((year%4==0)&&(year%100!=0))||(year%400==0)))
    {
    return strYear+"年"+"2月"+"29日";
    }
    else if((day==29)&&(month==2)&&(((year%4==0)&&(year%100!=0))||(year%400==0)))
    {
    return strYear+"年"+"3月"+"1日";
    }
    else if((day == 31)&&(month == 12))
    {
    return Integer.toString(year+1) + "年" + "1月1日";
    }
    else
    {
    if(day<=checkdate[month-1])
    {
    if(day + 1 > checkdate[month-1])
      return strYear+"年"+Integer.toString(month+1)+"月"+"1日";
    else
      return strYear+"年"+ strMonth +"月"+ Integer.toString(day+1)+"日";
    }

    else
    return "相应变量超出取值范围";
    }

    }
    public static void main(String[] args) {
    String strtime= nextDate(2001,2,28);
    System.out.println(strtime);
    }
    }
      

  6.   

    我借花献佛,把楼上程序完善了一下!还请多多包涵.import java.text.*;
    import java.util.*;
    class datetest1{
      private static String nextDate(int year,int month,int day){  
        if(year <1812 || year > 2012 || month < 1 || month > 12 ||day < 1 || day > 31){
           return "无效输入日期";
        }
        String stryear,strmonth,strday;
        stryear = Integer.toString(year);
        if(month<10)
        strmonth = "0"+Integer.toString(month);
        else
          strmonth = Integer.toString(month);
        if(day<10)
        strday = "0"+Integer.toString(day);
        else
          strday = Integer.toString(day);
        System.out.println("你输入的当前日期是:"+stryear+strmonth+strday);
        String strtime = stryear + strmonth + strday;
        DateFormat df = new SimpleDateFormat("yyyyMMdd");
        Calendar cal = Calendar.getInstance();
        try{
          Date dt = df.parse(strtime);
          if(!strtime.equals(df.format(dt)))
             return "相应变量超出取值范围";
          cal.setTime(df.parse(strtime));      
        }
    catch(ParseException e){
        e.printStackTrace();
        }
        cal.add(Calendar.DATE, 1);
        return df.format(cal.getTime()).toString();
      }
      public static void main(String[] args) {
     int year=Integer.parseInt(args[0]);
     int month=Integer.parseInt(args[1]);
     int date=Integer.parseInt(args[2]);
         String strtime= nextDate(year,month,date);
         System.out.println("下一天的日期是:"+strtime);
     //System.out.println(nextDate(2002,2,28));
    }  
    }  
      

  7.   

    JAVA没有日期函数,这个也要自己写?插播一条广告,小店新开张,优惠出售各种手工艺品,欢迎大家选购,是各位帅哥送女朋友、老婆、情人(OR各位美女送男朋友、老公、情人)的不二选择
    http://shop33881320.taobao.com/
      

  8.   

    列现成的几个方法吧,代码将大大缩短GregorianCalendar类里1.boolean isLeapYear(int year)  
       确定给定的年份是否为闰年。2.getActualMaximum(int field) 
        返回此日历字段可能具有的最大值。 
          例如:某年某月,最多有多少天3.getGreatestMinimum(int field) 
       返回此 GregorianCalendar 实例给定日历字段的最高的最小值。4.加1天用 GregorianCalendar类的add()方法
            如:date.add(GregorianCalendar.DATE,1)