题目信息:题目链接
日期计算
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
如题,输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天。
-
输入
- 第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每行的输入数据都是一个按题目要求格式输入的日期。 输出
- 每组输入数据的输出占一行,输出判断出的天数n 样例输入
-
3 2000 4 5 2001 5 4 2010 10 24
样例输出
-
96 124 297
解题思路:
以一组数据为例,要计算输入的数据时第几天,则要先判断该年是否是闰年,因此总体的走向有两个:闰年和非闰年
其次是天的具体计算,天数count应该为month-1之前月的总天数加上这个月month的天数day。
输入:
在使用nextInt()与nextLine()之间要加入一个nextLine(),用于吸收nextInt()中的缓冲符。
代码实现:import java.util.Scanner;
/**
* Dragon
* 2017/4/28
*/
public class 日期计算 {
private static int[][] months={{31,29,31,30,31,30,31,31,30,31,30,31},
{31,28,31,30,31,30,31,31,30,31,30,31,}};
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
int n=in.nextInt();
in.nextLine();
int[] result=new int[n];
for(int i=0;i<n;i++)
{
String[] input=in.nextLine().split(" ");
int year=Integer.parseInt(input[0]);
int month=Integer.parseInt(input[1]);
int day=Integer.parseInt(input[2]);
result[i]=GetDateNumber(year,month,day);
}
for(int i=0;i<n;i++)
System.out.println(result[i]);
}
private static int GetDateNumber(int year, int month, int day)
{
int flag=1;
int count=0;
if(year%4==0 && year %100!=0 || year%400==0)
{
flag=0;
for(int i=0;i<month-1;i++)
count+=months[flag][i];
count+=day;
}
else
{
for(int i=0;i<month-1;i++)
count+=months[flag][i];
count+=day;
}
return count;
}
}
import java.util.Scanner;
/**
* Dragon
* 2017/4/28
*/
public class 日期计算 {
private static int[][] months={{31,29,31,30,31,30,31,31,30,31,30,31},
{31,28,31,30,31,30,31,31,30,31,30,31,}};
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
int n=in.nextInt();
in.nextLine();
int[] result=new int[n];
for(int i=0;i<n;i++)
{
String[] input=in.nextLine().split(" ");
int year=Integer.parseInt(input[0]);
int month=Integer.parseInt(input[1]);
int day=Integer.parseInt(input[2]);
result[i]=GetDateNumber(year,month,day);
}
for(int i=0;i<n;i++)
System.out.println(result[i]);
}
private static int GetDateNumber(int year, int month, int day)
{
int flag=1;
int count=0;
if(year%4==0 && year %100!=0 || year%400==0)
{
flag=0;
for(int i=0;i<month-1;i++)
count+=months[flag][i];
count+=day;
}
else
{
for(int i=0;i<month-1;i++)
count+=months[flag][i];
count+=day;
}
return count;
}
}
1384

被折叠的 条评论
为什么被折叠?



