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

处理:

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. 32位与64位下各类型长度对比
  2. #1049 : 后序遍历(二叉树,DFS)
  3. 闫智宣的开发版_Android
  4. 数据分析融入至BI工具的新思路
  5. Masonry 控件详解
  6. pytorch如何增加维度_Pytorch中的LSTM:如何添加/更改序列长度维度?-问答-阿里云开发者社区-阿里云...
  7. python源码剖析, 第0部分 -- 编译python
  8. 极大似然法(ML)与最大期望法(EM)
  9. 【调剂】关于开通上海第二工业大学2022年硕士研究生招生预调剂系统的通知
  10. Linux常用命令-云计算篇-100%亲测超详细讲解
  11. 个人作业 Alpha项目测试
  12. 入侵必练的CMD命令
  13. learning model 的演讲【转载】
  14. 漏洞复现----11、GlassFish任意文件读取
  15. LaTeX入门|(2)定制专属模板
  16. 12个固态硬盘优化技巧,延长固态硬盘使用寿命
  17. “排队” 用英语怎么说
  18. Python处理示波器CSV表格数据、微软excel格式数据
  19. Python 修改文件名加前缀
  20. 用cdn网址的方式引入echart和echart-gl

热门文章

  1. a small test by windows live writer 2011
  2. MySql重启命令与数据库安装目录
  3. 教你怎样做项目开发总结报告[转]
  4. 3.Prometheus 监控技术与实践 --- Exporter
  5. 9. grouped product
  6. 6. 隐藏 index.php
  7. ubuntu16.04安装中文输入法
  8. 【编程工具】Sublime Text3快捷键配置
  9. 高斯消元法(Gauss Elimination) 分析 题解 模板——czyuan原创
  10. ios7学习之路七(隐藏虚拟键盘,解决键盘挡住UITextField问题)