为了准备itat,不得不把往年java的复赛题搜出来做做,今天做了第六届复赛题的A,B卷,总体感觉不难,看有人在问B卷的最后一道题的答案,现在将我的代码公布如下,希望有人可以帮忙找下bug,代码只是完成其要求的功能而已,没有做细节方面的异常处理!
题目是:编程实现输入格式为"yyyy-mm-dd"的字符串,获得一个给定的日期,计算此日期的下一天的日期并输出,程序验证的时候,要考虑任何日期是月底、年底、闰年的情况。
import java.util.Calendar;
import java.util.GregorianCalendar;
public class GetNextDayDemo
{
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
Calendar ca=new GregorianCalendar();
int ye=ca.get(Calendar.YEAR);
int mo=ca.get(Calendar.MONTH)+1;
int da=ca.get(Calendar.DAY_OF_MONTH);
String date=ye+"-"+mo+"-"+da;
String[] dateArray=date.split("-");
Integer year=Integer.valueOf(dateArray[0]);
Integer month=Integer.valueOf(dateArray[1]);
Integer day=Integer.valueOf(dateArray[2]);
String nextDay=getNextDay(year,month,day);
System.out.println("The next day is:"+nextDay);
}
public static String getNextDay(int year,int month,int day){
//超过了当月的最大日期
if((day+1)>getDaysInMonth(year,month)){
if(month==12){
return (year+1)+"-01-01";
}
else{
return year+"-"+(month+1)+"-01";
}
}
else{
return year+"-"+month+"-"+(day+1);
}
}
//通过年份和月份,确定对应的月份一共有多少天
public static int getDaysInMonth(int year,int month){
int days=0;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
days=31;
}
else if(month==2){
if(isBissextile(year))days=29;
else days=28;
}else{
days=30;
}
return days;
}
public static boolean isBissextile(int year){
if((year%4==0&&year%100!=0)||(year%400==0))return true;
return false;
}
}