简单错误记录

描述

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

 

处理: 

 

1、 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加;

 

2、 超过16个字符的文件名称,只记录文件的最后有效16个字符;

 

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

 

知识点 字符串
运行时间限制 0M
内存限制 0
输入

一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。

 

如:E:\V1R2\product\fpgadrive.c   1325

 

输出

将所有的记录统计并将结果输出,格式:文件名 代码行数 数目,一个空格隔开,如:

 

 fpgadrive.c 1325 1

 

样例输入 E:\V1R2\product\fpgadrive.c 1325
样例输出 fpgadrive.c 1325 1
package com.oj;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;


public class TestOj {
	private static String findError(String str){
		String[] data = str.split("\\\\");
		String[] use = data[data.length-1].split(" ");
		
		String last = data[data.length-1];
		StringBuilder sb = new StringBuilder();
		boolean flag = false;
		for(int i = 0;i < last.length(); i++){
			if(last.charAt(i)==' '){
				flag = true;
				continue;
			}
			if(flag)
				sb.append(last.charAt(i));
		}
		
		//System.out.println("hehe "+sb.toString());
		String fileName = use[0].length()>16 ? use[0].substring(use[0].length()-16, use[0].length()):use[0];
		String key = fileName+" "+sb.toString();
		return key;
	}
	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<String>();
		Scanner in = new Scanner(System.in);
		Map<String,Integer> errorMap = new HashMap<String,Integer>();
		while(in.hasNext()){
			String input = in.nextLine();
			String key = findError(input);
			if(errorMap.containsKey(key)){
				String tempvalue = String.valueOf(errorMap.get(key));
				errorMap.put(key, errorMap.get(key)+1);
				String temp = key+" "+tempvalue; 
				int pos = list.indexOf(temp);
				list.set(pos, key+" "+String.valueOf(errorMap.get(key)));
			}else{
				if(list.size()==8)
					list.remove(0);
				errorMap.put(key, 1);
				String temp = key+" 1";
				list.add(temp);
			}
			
		}
		
		for(String show:list){
			System.out.println(show);
		}
	}
}

  

posted @ 2016-03-31 16:42  再见,少年  Views(181)  Comments(0Edit  收藏  举报