NextDate函数的设计、实现和测试
函数有3个参数:月份、日期和年;它们都具有整数值,且满足以下条件:
1<=月份<=12
1<=日期<=31
1812<=年<=2012
函数返回输入日期之后的那个日期;如果输入无效值,如2000年6月31日,输出指示相应变量超出取值范围;对于无效的日月年组合,如“1999年13月32日”输出“无效输入日期”。
函数有3个参数:月份、日期和年;它们都具有整数值,且满足以下条件:
1<=月份<=12
1<=日期<=31
1812<=年<=2012
函数返回输入日期之后的那个日期;如果输入无效值,如2000年6月31日,输出指示相应变量超出取值范围;对于无效的日月年组合,如“1999年13月32日”输出“无效输入日期”。
解决方案 »
- 为什么下面的代码执行完毕,结果是12test呢?搞不明白!
- 学Java进做什么业务的公司最好
- 各位大侠给个例子用java读取shp,shx格式的文件,在线急等!!!
- 帮我看一下是什么错误?
- ImageIO.read(),Invalid ICC Profile Data的问题,jdk的bug???
- 请问怎么在jLabel中放入图片呀
- form-bean 是不是必须有啊?这急啊,系统做完发现这个问题
- java为什么不提供流的转接
- Java3D的鼠标捕捉事件(高手请进)
- 求打印的例子
- 100 分求助 ! 在JAVA 中如何获取一个对象占用的实际内存大小?
- 每隔1秒鐘就去檢查一個變量,當那變量變為0時,就println(“end”)怎麼寫呢?
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);
}
}
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);
}
}
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);
}
}有错误的地方,希望大家指正!
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));
}
}
应该可以了,可能有更优化的方法。
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);
}
}
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));
}
}
http://shop33881320.taobao.com/
确定给定的年份是否为闰年。2.getActualMaximum(int field)
返回此日历字段可能具有的最大值。
例如:某年某月,最多有多少天3.getGreatestMinimum(int field)
返回此 GregorianCalendar 实例给定日历字段的最高的最小值。4.加1天用 GregorianCalendar类的add()方法
如:date.add(GregorianCalendar.DATE,1)