题目描述
这是一个很经典的题,给定一个日期,输出这个日期是该年的第几天。
输入
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成(见样例) ,另外,可以向你确保所有的输入数据是合法的。
输出
对于每组输入数据,输出一行,表示该日期是该年的第几天。
样例输入
1985/1/20
2006/3/12
样例输出
20
71
解题思路
因为一直都是用c或者c++来做题,所以用java来写这道题的时候还是用的一样的思路,后来发现java有自带的方法,所以总结了几个解题代码
代码
代码1:
package 第几天;
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int []a= {0,31,28,31,30,31,30,31,30,31,30,31,30,31};
int []b= {0,31,29,31,30,31,30,31,30,31,30,31,30,31};
String str=new String();
while(in.hasNext())
{
str=in.nextLine();
int n=str.length();
char []s=new char[n];
s=str.toCharArray();
int y=0;
int m=0;
int d=0;
int i,j,k;
for(i=0;i<4;i++)
{
y=y*10+s[i]-'0';
}
for(j=i+1;s[j]!='/';j++)
{
m=m*10+s[j]-'0';
}
for(k=j+1;k<n;k++)
{
d=d*10+s[k]-'0';
}
//System.out.println(y+" "+m+" "+d );
if(((y%4==0)&&(y%100!=0))||(y%400==0))//是闰年
{
int sum=0;
for(int t=1;t<m;t++)
{
sum=sum+b[t];
}
System.out.println(sum+d);
}
else
{
int sum=0;
for(int t=1;t<m;t++)
{
sum=sum+a[t];
}
System.out.println(sum+d);
}
}
}
}
代码2
自带方法代码
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
//int []a= {0,31,28,31,30,31,30,31,30,31,30,31,30,31};
//int []b= {0,31,29,31,30,31,30,31,30,31,30,31,30,31};
String str=new String();
while(in.hasNext())
{
str=in.nextLine();
String[] a=str.split("/");
Calendar calendar=new GregorianCalendar(Integer.parseInt(a[0]),Integer.parseInt(a[1])-1,Integer.parseInt(a[2]));
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
}
}
}