开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。

处理:

1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加;(文件所在的目录不同,文件名和行号相同也要合并)

2.超过16个字符的文件名称,只记录文件的最后有效16个字符;(如果文件名不同,而只是文件名的后16个字符和行号相同,也不要合并)

3.输入的文件可能带路径,记录文件名称不能带路径

输入描述:

一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。文件路径为windows格式如:E:V1R2productfpgadrive.c 1325

输出描述:

将所有的记录统计并将结果输出,格式:文件名代码行数数目,一个空格隔开,如: fpgadrive.c 1325 1 结果根据数目从多到少排序,数目相同的情况下,按照输入第一次出现顺序排序。如果超过8条记录,则只输出前8条记录.如果文件名的长度超过16个字符,则只输出后16个字符

示例1
输入
E:V1R2productfpgadrive.c 1325
输出
fpgadrive.c 1325 1

import java.util.*;public class Main {public static void main(String[] args){Scanner sc=new Scanner(System.in);HashMap<String,ErrLog> map=new HashMap<>();String file=null;int lastIndex=0;int errorLine=0;String key=null;ErrLog errLog=null;StringBuilder sb=new StringBuilder();while(sc.hasNext()) {file=sc.next();errorLine=sc.nextInt();lastIndex=file.lastIndexOf("");sb.append(lastIndex<0?file:file.substring(lastIndex+1)).append(" ").append(errorLine);key=sb.toString();sb.setLength(0);errLog=map.get(key);if(errLog==null){map.put(key,new ErrLog(key,1));}else {errLog.size++;}}sc.close();ArrayList<ErrLog> list=new ArrayList<ErrLog>(map.values());Comparator<ErrLog> cmp=new Comparator<ErrLog>() {@Overridepublic int compare(ErrLog o1, ErrLog o2) {return o2.size==o1.size?(o1.queueMark-o2.queueMark):(o2.size-o1.size);}};Collections.sort(list,cmp);int len=list.size()<8?list.size():8;for(int i=0;i<len;i++){errLog=list.get(i);lastIndex=errLog.name.lastIndexOf(" ");lastIndex=lastIndex-16<0?0:lastIndex-16;System.out.println((lastIndex==0? errLog.name:errLog.name.substring(lastIndex))+" "+errLog.size);}}}class ErrLog{static int mark;String name;//文件名+错误行号int queueMark;//标记出现的顺序int size;//统计出现错误的的次数public ErrLog(String name,int size){super();this.name=name;this.size=size;this.queueMark=mark++;}
}

HashMap和LinkedHashMap的区别:

深入理解HashMap和LinkedHashMap的区别​www.flydean.com

由于LinkedHashMap遍历的顺序与插入的顺序一致,所以我们实现的cmp只需要比较size就好。

import java.util.*;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);Map<String, Integer> map = new LinkedHashMap<>();while (sc.hasNextLine()) {String s = sc.nextLine();if(s == null || "".equals(s)) break;String[] split = s.split(" ");String key = split[0].substring(split[0].lastIndexOf('') + 1) + " " + split[1];map.put(key, map.containsKey(key) ? map.get(key) + 1 : 1);}List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {@Overridepublic int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {return o2.getValue().compareTo(o1.getValue());}});for (int i = 0; i < 8; i ++) {String[] split = list.get(i).getKey().split(" ");if(split[0].length() > 16) split[0] = split[0].substring(split[0].length() - 16);System.out.println(split[0] + " " + split[1] + " " + list.get(i).getValue());}}
}

链接:https://www.nowcoder.com/questionTerminal/67df1d7889cf4c529576383c2e647c48?answerType=1&f=discussion 来源:牛客网

80字符带空格 段错误_简单错误记录相关推荐

  1. 80字符带空格 段错误_【超详细】ArcGIS字段计算器分割字段中的字符串

    最近在整理植物数据,数据本来是以excel进行存储,但是其中涉及到要对字段进行分割,由于对excel的相关函数不熟悉于是想着能不能用arcgis的字段计算器进行解决,经过摸索成功地解决了自己遇到的问题 ...

  2. 远程连接 错误 内部错误_关于错误的性质和原因。 了解错误因素

    远程连接 错误 内部错误 Back in 2012, I was a young[er] product designer working in a small tech agency in Vale ...

  3. java 主动抛出 段错误_分段错误的原因?

    我在C中为扫描程序编写了一些代码,但我一直收到分段错误 . 奇怪的是,分段错误发生在代码完成时 . 我认为它与我的扫描功能和 file.get() 的使用有关,但这不会导致代码的那一行出现分段错误吗? ...

  4. 共阳数码管段码表_简单共阴极数码管电路图大全

    共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a.b.c.d.e.f.g及dp(小数点),如下图所示.图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个L ...

  5. 7z 头部错误 数据错误_简单的方法来修复损坏的7Zip的文件

    7-Zip是,它允许用户创建不同的Windows系统上的归档文件的软件之一.用几个简单的步骤,不同的压缩级别此应用程序压缩文件.有时7zip的文件遭到损坏,由于多种原因.在情况下,如果有损坏7zip的 ...

  6. java带参数的构造方法_简单了解JAVA构造方法

    构造方法作用就是对类进行初始化. 如果你没有定议任何构造方法的形式,程式会为你取一个不带任何参数的构造函数,那么你产生类的对像时只能用不带参数的方法.下面小编和大家来一起学习一下吧. 怎么写 java ...

  7. mysql连接10061错误_数据库连接错误出现10061是怎么回事?

    展开全部 数据库连32313133353236313431303231363533e4b893e5b19e31333363396461接错误出现10061解决方法如下: 1.在服务端MySQL文件夹下 ...

  8. rpc结构错误_结构性错误

    rpc结构错误 团队成员在使用以下代码时遇到了麻烦: void extractData(String targetUri) { Path tempFile = createTempFilePath() ...

  9. python连接sql server报20002错误_数据库连接错误:20009, b'DB-Lib error message 20009

    本地连接数据库没问题, 在 AWS 服务器上连接数据库时,报数据库连接错误: 20009 环境是 python3.5 用的是 pymssql 连接的 MS SQLServer Traceback (m ...

  10. shell 脚本比较字符串相等_比较带空格的字符串相等的Shell脚本 如何比较两个.....

    ****************************比较带空格的字符串相等的Shell脚本*************************** 如果要比较的字符串中间有空格,可以用下面的程序(摘 ...

最新文章

  1. 微信小程序开通腾讯云开发实践流程附详细图解
  2. django富文本编辑器
  3. 揭秘2019双11背后的云网络 – 双11网络架构和洛神系统
  4. Android View之用户界面...
  5. 下载python教程-零基础Python教程全集下载.pdf
  6. debian如何安装wifi驱动_装机人员是如何离线为Win7、Win10、XP安装驱动的?小编告诉你…...
  7. 使用tcpdump抓Android网络包
  8. java后端社招面试经历
  9. VirtualBox简单使用
  10. Excel “不能在隐藏工作簿中编辑宏,请选定“取消窗口隐藏”命令以显示工作簿”
  11. eax, ebx, ecx, edx, esi, edi, ebp, esp
  12. 关于iOS中UITableView下拉距离短刷新没事,下拉距离长就会崩溃的问题解决方案
  13. 视频教程-新版华为HCIA数通(路由与交换)课程-华为认证
  14. 1.OpenCV介绍
  15. Wayland (简体中文)
  16. 李建忠设计模式之“单一职责”模式
  17. 论文笔记:Dual Contrastive Loss and Attention for GANs
  18. 高仿SinaWeibo新浪微博发布页面话题效果
  19. 查看linux创建了哪些用户组,Linux查看用户属于哪些组/查看用户组下有哪些用户...
  20. MATLAB读取TECPLOT笛卡尔网格三维流场数据

热门文章

  1. 4.Jenkins 2 权威指南 --- 通知与报告
  2. 3.RabbitMQ实战 --- 运行和管理Rabbit
  3. 19. 用 GTK+ 进行GNOME 编程,用 Qt进行KDE 编程
  4. 20. Element innerHTML 属性
  5. php中time()与$_SERVER[REQUEST_TIME]用法区别
  6. Docker 从入门到放弃(一)安装
  7. Qt--自定义Delegate
  8. navigationBar设置透明度
  9. 生产环境中的PHP WEB 简单架构
  10. 全网最好用的VS Code插件推荐