题解 | #简单错误记录#
简单错误记录
https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
ArrayList<Err> list = new ArrayList<>();
while (in.hasNextLine()) {
String nextLine = in.nextLine();
//获取数据
String[] s = nextLine.split(" ");
String substring = s[0].substring(s[0].lastIndexOf("\\") + 1);
substring = substring.length() > 16 ? substring.substring(
substring.length() - 16) : substring;
//重复性校验 (保留最后16位)和行号完全匹配
Boolean bool = true;
for (Err err1 : list) {
if (err1.getName().equals(substring) && err1.getLine()== Integer.valueOf(s[1])){
err1.setCount(err1.getCount() + 1);
bool = false;
}
}
if (bool) {
Err err = new Err();
err.setName(substring);
err.setLine(Integer.valueOf(s[1]));
err.setCount(1);
list.add(err);
}
}
//输出最后八行
for (int i = list.size() - 8; i < list.size(); i++) {
if (i >= 0) {
System.out.println(list.get(i));
}
}
}
private static class Err {
private String name;
private int line;
private int count;
public String toString() {
return name + " " + line + " " + count;
}
public Err() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getLine() {
return line;
}
public void setLine(int line) {
this.line = line;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
}
解题思路:
1, 构建对象, 以便整理数据以及输出结果;
2, 记录新增时需要注意重复性校验;
3, 最终输出是注意仅需要输出最后8条记录