打印日期(解题报告)

来源:互联网 发布:手机文件恢复软件 编辑:程序博客网 时间:2024/05/22 00:05

题目描述

给出年分m和一年中的第n天,算出第n天是几月几号。
输入描述:
输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。


输出描述:
可能有多组测试数据,对于每组数据,按 yyyy-mm-dd的格式将输入中对应的日期打印出来。

输入例子:
2000 32000 312000 402000 602000 612001 60

输出例子:
2000-01-032000-01-312000-02-092000-02-292000-03-012001-03-01


思路:给定年份和月份,求日期

          1.判定年份是否为闰年,如果是闰年,2月份为29天

          2.从一月开始算,剩余天数小于等于当前月份的天数时,记录当前的月份和天数。


package huazhongUniversity;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class PrintDate {public static void main(String[] args) throws IOException{// TODO Auto-generated method stubBufferedReader br=new BufferedReader(new InputStreamReader(System.in));String line=null;while((line=br.readLine())!=null){String [] strs=line.split(" ");int year=Integer.parseInt(strs[0]);int days=Integer.parseInt(strs[1]);System.out.println(Date(year,days));}}public static String Date(int year,int days){int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31};if(isRunYear(year)){months[2]=29;}String ans=year+"-";for(int i=1;i<months.length;++i){if(days>months[i]){days-=months[i];}else{if(i<10){ans=ans+"0"+i+"-";}else{ans=ans+i+"-";}if(days<10){ans+="0"+days;}else{ans+=days;}break;}}return ans;}public static boolean isRunYear(int year){if(year%400==0||(year%4==0&&year%100!=0)){return true;}else{return false;}}}








原创粉丝点击