题目中涉及到很多知识点,包括强制类型转换,字符串截取,闰年的判断方法
题目描述:
第几天?
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 121265 Accepted Submission(s): 43991
Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20 2006/3/12
Sample Output
20 71
AC代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext())
{
//定义一年12个月的每个月天数
int s=0,b[] = {31,28,31,30,31,30,31,31,30,31,30,31};
String a;
a = in.nextLine();
//强制字符串截断,以“/”位标识
int x = a.indexOf("/");
int y = a.lastIndexOf("/");
//截取输入字符串中年月日
String year = a.substring(0,x);
String month = a.substring(x+1,y);
String day = a.substring(y+1);
//强制类型转换,字符串转换为整型
int year1 = Integer.parseInt(year);
int month1 = Integer.parseInt(month);
int day1 = Integer.parseInt(day);
if(year1%400==0||(year1%4==0&&year1%100!=0))//判断年份是否为闰年
{
//闰年二月29天
b[1] = b[1]+1;
for(int i=0;i<month1-1;i++)
{
s =s+ b[i];
}
System.out.println(s+day1);
}
else
{
for(int i=0;i<month1-1;i++)
{
s =s+ b[i];
}
System.out.println(s+day1);
}
}
}
}