您的位置:首页 > 编程语言

[编程题] 简单错误记录

2017-08-11 11:25 141 查看
时间限制:1秒
空间限制:65536K
开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
处理:
1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加;(文件所在的目录不同,文件名和行号相同也要合并)
2.超过16个字符的文件名称,只记录文件的最后有效16个字符;(如果文件名不同,而只是文件名的后16个字符和行号相同,也不要合并)
3.输入的文件可能带路径,记录文件名称不能带路径
输入描述:
一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。
   文件路径为windows格式
   如:E:\V1R2\product\fpgadrive.c 1325
 输出描述:
将所有的记录统计并将结果输出,格式:文件名代码行数数目,一个空格隔开,如: fpgadrive.c 1325 1
    结果根据数目从多到少排序,数目相同的情况下,按照输入第一次出现顺序排序。
    如果超过8条记录,则只输出前8条记录.
    如果文件名的长度超过16个字符,则只输出后16个字符
 

输入例子1:
 E:\V1R2\product\fpgadrive.c 1325
 

输出例子1:
 fpgadrive.c 1325 1
 
测试用例:
e:\1\aa3.txt 3 e:\3\aa1.txt 2 e:\2\aa2.txt 3e:\3\aa1.txt 1 e:\1\aa1.txt 3 e:\3\aa1.txt 2 e:\1\aa3.txt 3 e:\2\aa3.txt 2e:\1\aa1.txt 2 e:\3\aa3.txt 2 e:\1\aa2.txt 2 e:\1\aa3.txt 1 e:\1\aa3.txt 1e:\2\aa3.txt 2 e:\1\aa2.txt 1 e:\3\aa1.txt 2 e:\1\aa1.txt
3 e:\2\aa1.txt 1e:\3\aa3.txt 2 e:\1\aa1.txt 1 e:\2\aa2.txt 2 e:\3\aa3.txt 2 e:\1\aa2.txt 1e:\1\aa3.txt 2 e:\1\aa3.txt 3 e:\1\aa2.txt 3 e:\3\aa1.txt 3 e:\2\aa2.txt 2e:\1\aa1.txt 1 e:\2\aa3.txt 1 e:\3\aa1.txt 1 e:\2\aa1.txt 3 e:\3\aa3.txt 2e:\1\aa3.txt 3 e:\2\aa3.txt
3 e:\1\aa2.txt 3 e:\2\aa2.txt 1 e:\1\aa3.txt 1e:\1\aa3.txt 1 e:\3\aa3.txt 3 e:\3\aa3.txt 2 e:\1\aa2.txt 3 e:\1\aa2.txt 3e:\1\aa2.txt 3 e:\1\aa1.txt 1 e:\2\aa3.txt 1 e:\3\aa3.txt 1 e:\2\aa3.txt 2e:\3\aa1.txt 3 e:\2\aa2.txt 2 e:\2\aa2.txt 2 e:\2\aa3.txt 1 e:\1\aa3.txt
3e:\3\aa1.txt 2 e:\3\aa2.txt 2 e:\1\aa2.txt 1 e:\2\aa2.txt 1 e:\2\aa1.txt 2e:\2\aa2.txt 1 e:\1\aa2.txt 1 e:\2\aa3.txt 1 e:\2\aa2.txt 1 e:\2\aa1.txt 2e:\3\aa2.txt 3 e:\3\aa1.txt 3 e:\2\aa2.txt 3 e:\2\aa3.txt 1 e:\3\aa3.txt 2 e:\2\aa3.txt1 e:\1\aa1.txt 2 e:\3\aa3.txt
1 e:\3\aa1.txt 1 e:\2\aa2.txt 3 e:\3\aa3.txt 2e:\2\aa1.txt 3 e:\1\aa3.txt 3 e:\3\aa2.txt 1 e:\2\aa1.txt 3 e:\1\aa3.txt 3e:\2\aa2.txt 2 e:\1\aa1.txt 2 e:\3\aa1.txt 1 e:\1\aa3.txt 1 e:\3\aa1.txt 2e:\1\aa1.txt 2 e:\1\aa1.txt 3 e:\3\aa1.txt 1 e:\3\aa1.txt 1 e:\2\aa3.txt
3e:\2\aa2.txt 1 e:\2\aa1.txt 2 e:\2\aa2.txt 1 e:\3\aa2.txt 3 e:\1\aa2.txt 1e:\3\aa2.txt 2 e:\2\aa1.txt 1 e:\2\aa3.txt 3 e:\1\aa1.txt 2 e:\1\aa1.txt 1e:\1\aa1.txt 2
对应输出应该为:
aa1.txt 2 14 aa3.txt 1 13 aa1.txt 1 12 aa2.txt 1 12aa3.txt 3 11 aa3.txt 2 11 aa2.txt 3 10 aa1.txt 3 9
 
package huawei2016;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
 
publicclass ErrorRecoder {
      publicstaticvoidmain(String[]args)//输出有序,记录不能用hashmap,要用treemap
      {
           Map<String,Integer>
map=new LinkedHashMap();//LinkedHashMap按put顺序保存记录
           Scanner
scan = newScanner(System.in);//这种输入要学会  
           int
count=0;//记录行数,
          while(scan.hasNext())//这是要接受多组输入的节奏啊
         {
               String
path=scan.next();
               String
filename=path.substring(path.lastIndexOf("\\")+1);
               if(filename.length()>16)
                   
filename=filename.substring(filename.length()-16);
               intlinenum=scan.nextInt();//行号
               String
record=filename+" "+linenum;
               if(map.containsKey(record))
                   
map.put(record, (int)map.get(record)+1);
               else
                   
map.put(record, 1);       
         }
           //相当于按ctrl+z循环结束,然后执行下方步骤
         
scan.close();
         List<Map.Entry<String,Integer>>list=newLinkedList<Map.Entry<String,Integer>>(map.entrySet());
         Collections.sort(list,new Comparator<Map.Entry<String,
Integer>>()
         {
              
//降序
              
@Override
               publicintcompare(Entry<String,Integer>args0,Entry<String,Integer>args1)
               {
                    returnargs1.getValue()-args0.getValue();
               }
         });
          intprintlen=map.size();
          if(map.size()>8)
              
printlen=8;
          for(Map.Entry<String,Integer>mapping:list)
         {
              
printlen--;
               if(printlen<0)
                    break;
               System.out.println(mapping.getKey()+"
"+mapping.getValue());
         }       
      }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java