华为机试(20)简单错误记录

华为机试(20)简单错误记录_第1张图片

 

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        //用LinkedHashMap记录
        Map map = new LinkedHashMap<>();
        while(input.hasNext()){
            String str = input.next();
            int linenum = input.nextInt();
            //根据\\分成路径名
            String[] arr = str.split("\\\\");
            String s = arr[arr.length-1];
            //超过16个字符的文件名称,只记录文件的最后有效16个字符;
            if(s.length()>16){
                s = s.substring(s.length()-16);
            }
            // 将文件名和行号组成字符串 作为map的key值存放
            String key=s+" "+linenum;
            int value=1;
            if(map.containsKey(key))
                map.put(key, map.get(key)+1);
            else {
                map.put(key, value);
            }
        }
        int count = 0;
        for(String string:map.keySet()){
            count++;
            //如果是错误最多的8个可以用TreeMap,并引入import java.util.TreeMap;
            if(count>(map.keySet().size()-8)) //输出最后八个记录
                System.out.println(string+" "+map.get(string));
        }
    }
}

最后8个还有些问题,题意到底是输出最后八个,还是错误最多的8个。

你可能感兴趣的:(华为机试100+)