考虑了一堆边界条件的慢代码
计算日期到天数转换
http://www.nowcoder.com/questionTerminal/769d45d455fe40b385ba32f97e7bcded
本题目按道理来说应该是简单的。纯粹边界条件的考虑。
但是做完提交以后,看题解的时候发现大家简单的处理了一下闰年与否就能提交了。。。
好吧是我考虑过多了。把我的劣质代码贴一下
import java.io.BufferedInputStream; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(new BufferedInputStream(System.in)); while(sc.hasNext()){ int year = sc.nextInt(); int month = sc.nextInt(); int[] days = new int[]{31,28,31,30,31,30,31,31,30,31,30,31}; int day = sc.nextInt(); int ans = 0; //计算闰年 boolean leapYear = false; if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) leapYear = true; //通用的计算天数 for(int i=0; i<month-1; i++){ ans += days[i]; } ans += day; //特殊情况处理 //闰年,且大于2.29 if(leapYear && month >= 3){ ans += 1; } //年份错误 if(year < 1) ans = -1; //月份错误 if(month < 0 || month > 12) ans = -1; //闰年,2月日期大于29或小于0 if(leapYear && month == 2 && (day < 0 || day > 29)) ans = -1; //闰年,普通月份日期出错 if(leapYear && month != 2 && (day < 0 || day > days[month-1])) ans = -1; //平年,日期错误 if(!leapYear && (day < 0 || day > days[month-1]) ) ans = -1; System.out.println(ans); } sc.close(); } }