1. 程式人生 > 其它 >java題目計算日期到天數轉換

java題目計算日期到天數轉換

描述

根據輸入的日期,計算是這一年的第幾天。 保證年份為4位數且日期合法。 進階:時間複雜度:O(n)\O(n),空間複雜度:O(1)\O(1)

輸入描述:

輸入一行,每行空格分割,分別是年,月,日

輸出描述:

輸出是這一年的第幾天

示例1

輸入:
2012 12 31
輸出:
366

示例2

輸入:
1982 3 4
輸出:
63
 1 import java.io.BufferedReader;
 2 import java.io.IOException;
 3 import java.io.InputStreamReader;
 4
import java.util.HashMap; 5 6 /** 7 * 描述 8 * 根據輸入的日期,計算是這一年的第幾天。 9 * 保證年份為4位數且日期合法。 10 * 進階:時間複雜度:O(n)\O(n) ,空間複雜度:O(1)\O(1) 11 * 輸入描述: 12 * 輸入一行,每行空格分割,分別是年,月,日 13 * 14 * 輸出描述: 15 * 輸出是這一年的第幾天 16 */ 17 public class Main { 18 static HashMap<Integer, Integer> map = new HashMap<>();
19 static { 20 map.put(1, 31); 21 map.put(3, 31); 22 map.put(4, 30); 23 map.put(5, 31); 24 map.put(6, 30); 25 map.put(7, 31); 26 map.put(8, 31); 27 map.put(9, 30); 28 map.put(10, 31); 29 map.put(11, 30); 30 map.put(12, 31);
31 } 32 public static void main(String[] args) throws IOException { 33 final BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 34 String in; 35 while ((in = br.readLine()) != null) { 36 int sum = 0; 37 final String[] strArr = in.split(" "); 38 // 判斷是不是閏年 39 if (checkYear(Integer.parseInt(strArr[0]))) { 40 map.put(2, 29); 41 } else { 42 map.put(2, 28); 43 } 44 // 累計月份前的天數 45 int month = Integer.parseInt(strArr[1]); 46 for (int i = 1; i < month; i++) { 47 sum = sum + map.get(i); 48 } 49 int day = Integer.parseInt(strArr[2]); 50 sum = sum + day; 51 System.out.println(sum); 52 } 53 } 54 55 /** 56 * 判斷是不是閏年 57 * 閏年: 58 * (1)十年一閏百年不閏:即如果year能夠被4整除,但是不能被100整除,則year是閏年。 59 * (2)每四百年再一閏:如果year能夠被400整除,則year是閏年。 60 * @param year 61 * @return 62 */ 63 private static boolean checkYear(int year) { 64 if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) { 65 return true; 66 } 67 return false; 68 } 69 }