1028 人口普查 (20分)


DateDate

1814/09/062014/09/0620365(366)mssminhourday

ms=date1.getTime()-date2.getTime();
s=ms/1000;    (date1.getTime()-date2.getTime())/(1000);
min=s/60;     (date1.getTime()-date2.getTime())/(1000*60); 
hour=min/60;  (date1.getTime()-date2.getTime())/(1000*60*60);
day=hour/24;  (date1.getTime()-date2.getTime())/(1000*60*60*24); 
year=day/365;//这是错的

如果要计算相差年份可以将其转为字符串,判断相差年份是否超过n年

bug代码:


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class Main {

    public static void main(String[] args) throws ParseException, IOException {
        BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy/mm/dd");
       // long l = (sdf.parse("2014/09/06").getTime() - sdf.parse("1814/09/06").getTime()) / (1000 * 3600 * 24);
//        System.out.println("相差天数:"+l);
//        String nowStr="2014/09/06";
//        String beforeStr="2014/09/16";
//        long l = (sdf.parse(beforeStr).getTime() - sdf.parse(nowStr).getTime()) / (1000 * 3600 * 24);
//        System.out.println(l);
        String nowStr="2014/09/06";
        Date now=sdf.parse(nowStr);
        int cnt=0;
        Map<Date,String> map= new TreeMap<>();
        int n=Integer.parseInt(sc.readLine());
        for(int i=0;i<n;i++){
            String []s=sc.readLine().split(" ");
            String value=s[0];
            String key=s[1];
           // System.out.println(key);
            String []str=key.split("/");
            if(Integer.parseInt(str[0])>2014){
                continue;
            }
            //1000 * 24 * 60 * 60
//            long time=now.getTime()-sdf.parse(key).getTime();//ms
//            if((time/ (1000*3600*24)>365*200)){
//                System.out.println("相差天数: "+time/ (1000*3600*24));
//                continue;
//            }
            if(Integer.parseInt(str[0])<1814){
                continue;
            }
            if(Integer.parseInt(str[0])==1814){
                if(Integer.parseInt(str[1])<9){
                    continue;
                }
                if(Integer.parseInt(str[1])==9){
                    if(Integer.parseInt(str[2])<6){
                        continue;
                    }
                }
            }
            map.put(sdf.parse(key),value);
            cnt++;
        }
        if(map.size()==0){
            System.out.println("0");return;
        }

        int num=0;
        System.out.print(cnt+" ");
        for(Map.Entry<Date,String> m:map.entrySet()){
            Date key=m.getKey();
            String value=m.getValue();
            num++;
            if(num==1){
                System.out.print(value+" ");
            }
            if(num==cnt){
                System.out.println(value);
               // return;
            }
            //System.out.println(sdf.format(key)+" :"+value);
        }


    }
}



两个测试点没过:



//打印沙漏
//an=2n-1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class Main {

    public static void main(String[] args) throws ParseException, IOException {
        BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy/mm/dd");
        String nowStr="2014/09/06";
        Date now=sdf.parse(nowStr);
        int cnt=0;
        Map<Date,String> map= new TreeMap<>();
        int n=Integer.parseInt(sc.readLine());
        for(int i=0;i<n;i++){
            String []s=sc.readLine().split(" ");
            String value=s[0];
            String key=s[1];
           
            String []str=key.split("/");
            //年份比现在还晚
            if(Integer.parseInt(str[0])>2014){
                continue;
            }
            if(Integer.parseInt(str[0])==2014){
                if(Integer.parseInt(str[1])>9){
                    continue;
                }
                if(Integer.parseInt(str[1])==9){
                    if(Integer.parseInt(str[2])>6){
                        continue;
                    }
                }


            }
            //年龄相差大于200
            if(Integer.parseInt(str[0])<1814){
                continue;
            }
            if(Integer.parseInt(str[0])==1814){
                if(Integer.parseInt(str[1])<9){
                    continue;
                }
                if(Integer.parseInt(str[1])==9){
                    if(Integer.parseInt(str[2])<6){
                        continue;
                    }
                }
            }
            map.put(sdf.parse(key),value);
            cnt++;
        }
        if(map.size()==0){
            System.out.println("0");return;
        }

        int num=0;
        System.out.print(cnt+" ");
        for(Map.Entry<Date,String> m:map.entrySet()){
            Date key=m.getKey();
            String value=m.getValue();
            num++;
            if(num==1){
                System.out.print(value+" ");
            }
            if(num==cnt){
                System.out.println(value);
            }
          
        }


    }
}


判断年龄是否合法的代码其实可以很简化:

            if(key.compareTo("2014/09/06")>0||key.compareTo("1814/09/06")<0){
                continue;
            }

一个测试点没过:

posted @   浅滩浅  阅读(205)  评论(0编辑  收藏  举报
编辑推荐:
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
阅读排行:
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具
· Vue3封装支持Base64导出的电子签名组件
点击右上角即可分享
微信分享提示