题解 | 简单错误记录
简单错误记录
https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] info = new String[100];
int[] error = new int[100];
HashMap<String, Integer> hm = new HashMap<>();
List<String> order = new ArrayList<>(); //保存顺序
int i = 0; //输入第i条数据
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
info[i] = in.next();
int cul = in.nextInt(); //行号
int index = info[i].lastIndexOf('\\'); //提取文件
String folder = info[i].substring(index + 1);
if (folder.length() > 16) {
folder = folder.substring(folder.length() - 16);
}
String infos = folder + " " + cul;
Integer exist = hm.getOrDefault(infos, 0);
hm.put(infos, exist + 1);
if (exist == 0) { //新的报错信息
order.add(infos);
}
in.nextLine(); //吸收换行符
}
for (int j = (order.size() - 8 < 0) ? 0 : order.size() - 8; j < order.size(); j++) {
String key = order.get(j);
Integer value = hm.get(key);
System.out.println(key + " " + value);
}
}
}
