恋爱纪念日(日期问题)
蒜头君和花椰妹谈恋爱啦。祝福他们吧。蒜头君想知道第他们的第 100 天,200 天 ... 纪念日。
输入格式
输入 44 个整数 y,m,d表示他们在一起的日期,保证是一个 1900 年 1 月 1 日以后的日期,蒜头君想知道他们的 k(0≤k≤10000)天纪念日。
输出格式
输出格式按照yyyy-mm-dd
的格式输出 kk 天纪念日的日期。月份和天数必须各输出 22 位。保证最后答案年份不超过 44 位。
样例输入1
2016 10 1 100
样例输出1
2017-01-09
样例输入2
2017 1 1 10
样例输出2
2017-01-11
方法一:循环模拟每天
package 计蒜客; import java.util.Scanner; public class 恋爱纪念日 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int year=scan.nextInt(); int month=scan.nextInt(); int day=scan.nextInt(); int days=scan.nextInt(); int[] months=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31}; for(int i=1;i<=days;i++){ day+=1;//直接加1天 if(isRunNian(year)){ months[2]=29; }else{ months[2]=28; } if(day>months[month]){ month=month+1;//月份直接加1 day=1; if(month>12){ year+=1; month=1; } } } String mon=month+""; String da=day+""; if(month<10){ mon="0"+month; } if(day<10){ da="0"+day; } System.out.println(year+"-"+mon+"-"+da); //String result=fun(year,month,day,days); } public static boolean isRunNian(int year){//判断是否为闰年 if(year%400==0||(year%4==0&&year%100!=0)){ return true; } return false; } }
方法二:使用java类库
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int year = sc.nextInt(); int month = sc.nextInt(); int day = sc.nextInt(); int num = sc.nextInt(); Date dd = new Date(year - 1900, month - 1, day); Calendar cal = Calendar.getInstance(); cal.setTime(dd); cal.add(Calendar.DATE, num); Date newDate = cal.getTime(); int y = newDate.getYear() + 1900; int m = newDate.getMonth() + 1; int d = newDate.getDate(); if (m < 10 && d < 10) { System.out.print(y + "-0" + m + "-0" + d); } else if (m < 10 && d >= 10) { System.out.print(y + "-0" + m + "-" + d); } else if(m >= 10 && d < 10) { System.out.print(y + "-" + m + "-0" + d); } else { System.out.print(y + "-" + m + "-" + d); } } }