思路:用一个list保存错误信息,另一个list保存出现的次数。
public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 ArrayList<String> list=new ArrayList<>();//存储错误信息 ArrayList<Integer> times=new ArrayList<>();//存储出现次数 while (in.hasNextLine()) { // 注意 while 处理多个 case String str=in.nextLine(); String[] strArray=str.split("\\\\");//我用\\报错 String end=strArray[strArray.length-1]; if(end.length()>20){//16+空格+行数=20 end=end.substring(end.length()-20); } int index=list.indexOf(end);//得到当前错误信息在list中的下标 if(index!=-1){//当前错误信息在list中已经存在 times.set(index,times.get(index)+1); }else{//list中没有当前错误信息 list.add(end); times.add(1); } } for(int i=list.size()>8?list.size()-8:0;i<list.size();i++){ System.out.println(list.get(i)+" "+times.get(i)); } }