考虑了一堆边界条件的慢代码

计算日期到天数转换

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();
    }
}
全部评论

相关推荐

Hakasee:我的简历和你的基本一样,上周去了上海,boss投了三百家, 三家线下面试 第一家没有做题,全是八股和项目,因为第一次面试不怎么熟练,挂了 第二家,给你几个题目(①css垂直居中文字,字体每两秒闪烁一下以及点击弹窗,②给你一个链接,实现可视化地图,③然后是八股,图片性能优化,以及对图片app有什么想法),45分钟内做完,然后老板面试) 第三家特别偏僻,有点阴森,到了之后让了一个工位给我,有四个题目,①格式化时间 年月日当前时间星期几② 正则表达式提取新闻文字,③在文本域输入文字生成选择题以及选项④生成商品排版还是什么来着 三家都是不超过50人的小公司 两家线上牛客笔试(卡伦特,七牛云,但是笔试不仅要考前端,还要考后端,算法,甚至数学题 我的建议是如果只做了这两个vue项目且不怎么熟练的情况下,先沉淀沉淀,把react学了,上海好的公司基本都是react查看图片
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务