簡單錯誤記錄

題目描述

開發一個簡單錯誤記錄功能小模塊,可以記錄出錯的代碼所在的文件名稱和行號。
處理:
    一、 記錄最多8條錯誤記錄,循環記錄,對相同的錯誤記錄(淨文件名稱和行號徹底匹配)只記錄一條,錯誤計數增長;
    二、 超過16個字符的文件名稱,只記錄文件的最後有效16個字符;
    三、 輸入的文件可能帶路徑,記錄文件名稱不能帶路徑。

輸入描述

一行或多行字符串。每行包括帶路徑文件名稱,行號,以空格隔開。

輸出描述

將全部的記錄統計並將結果輸出,格式:文件名 代碼行數 數目,一個空格隔開,如:

輸入例子

E:\V1R2\product\fpgadrive.c   1325

輸出例子

fpgadrive.c 1325 1

算法實現

import java.util.ArrayList;
import java.util.Scanner;

/**
 * Declaration: All Rights Reserved !!!
 */
public class Main {
    private static class Error {
        private String name;
        private int line;
        private int count;

        @Override
        public String toString() {
            return name + " " + line + " " + count;
        }
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        ArrayList<Error> errors = new ArrayList<>();
        while (input.hasNext()) {
            String name = input.next();
            int num = input.nextInt();
            Error record = new Error();
            name = name.substring(name.lastIndexOf("\\") + 1);
            if (name.length() > 16) {
                name = name.substring(name.length() - 16);
            }

            boolean flag = true;
            //重複檢驗
            for (Error error : errors) {
                if (name.equals(error.name) && num == error.line) {
                    error.count++;
                    flag = false;
                }
            }
            //表示爲新Record
            if (flag) {
                record.name = name;
                record.line = num;
                record.count = 1;
                errors.add(record);
            }
        }
        input.close();
        //最多紀錄8條錯誤紀錄
        int j = 0;
        if (errors.size() > 8){
            j = errors.size() - 8;
        }
        for (; j < errors.size(); j++) {
            System.out.println(errors.get(j));
        }
    }
}
相關文章
相關標籤/搜索