第一种方法
https://blog.csdn.net/zy_extreme/article/details/52743454
第几天?
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 127309 Accepted Submission(s): 46234
Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20 2006/3/12
Sample Output
20 71
[java] view plain copy
- import java.util.*;
- class Main{
- public static void main (String args[]){
- Scanner sc = new Scanner(System.in);
- while(sc.hasNext()){
- String str = sc.nextLine();
- String[] date = str.split("/"); //解析出 年 月 日
- int n = Integer.parseInt(date[0]);
- int y = Integer.parseInt(date[1]);
- int r = Integer.parseInt(date[2]);
- int t = 0;//<span style="font-family: Arial, Helvetica, sans-serif;">是一月份就只要加日,是二月份就要把第一月份的天数(31)加上再加上日,是三月份就要把第一、二月份的天数(31+28)再加上日以此推</span>
- switch(y){
- case 1 : t+=r;break;
- case 2: t+=31+r;break;
- case 3: t+=59+r;break;
- case 4: t+=90+r;break;
- case 5: t+=120+r;break;
- case 6: t+=151+r;break;
- case 7: t+=181+r;break;
- case 8: t+=212+r;break;
- case 9: t+=243+r;break;
- case 10: t+=273+r;break;
- case 11: t+=304+r;break;
- case 12: t+=334+r;
- }
- if((n%400==0||(n%4==0&&n%100!=0))&&y>2)<span style="font-family: Arial, Helvetica, sans-serif;">//闰年判断,闰年要多加一天</span>
- System.out.println(t+1);
- else System.out.println(t);
- }
- }
- }
-------------------------------------------------------
第二种算法
package ACM.shu_ri_zi;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Main thisClass = new Main();
List<Integer> list = new ArrayList<Integer>();
Scanner s=new Scanner(System.in);
String test_count = s.nextLine();
int test_count_int = Integer.parseInt(test_count);
for(int i =0;i<test_count_int;i++) {
int day = thisClass.getDay(s);
list.add(day);
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
public int getDay(Scanner s) {
int dd[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int days=0;
String str=s.nextLine();
String[] date=str.split("/");
int y=Integer.parseInt(date[0]);
int m=Integer.parseInt(date[1]);
int d=Integer.parseInt(date[2]);
if((y%400 == 0 || (y%4 == 0 && y%100 !=0)) && m>2) days ++;
days += d;
for(int i=0;i<m;i++){
days += dd[i];
}
return days;
}
}