第几天?
Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20 2006/3/12
Sample Output
20
71
正确算法:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; /** * 考查对日期函数、switch的运用 */ public class 第几天 { public static void main(String[] args) throws ParseException { Scanner input = new Scanner(System.in); while (input.hasNext()) { String s = input.next(); String[] a = s.split("/"); int y = Integer.valueOf(a[0]); int m = Integer.valueOf(a[1]); int d = Integer.valueOf(a[2]); //第一种办法 SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd"); Calendar cal = Calendar.getInstance(); cal.setTime(df.parse(s)); int day = cal.get(Calendar.DAY_OF_YEAR); System.out.println(day); /*第二种办法 int m2 = 0; if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) { m2 = 29; } else { m2 = 28; } for (int i = 1; i < m; i++) { switch (i) { case 2: d = d + m2; break; case 4: case 6: case 9: case 11: d = d + 30; break; default: d = d + 31; } } System.out.println(d); */ /**第三种办法,已过时,由于有些OJ评判系统不支持过时的方法,所以不推荐使用 Date date = new Date(y - 1900, m - 1, d); SimpleDateFormat f = new SimpleDateFormat("D"); String tian = f.format(date); System.out.println(tian); */ } } }