码迷,mamicode.com
首页 > 其他好文 > 详细

【华为OJ】【069-简单错误记录】

时间:2016-05-16 08:15:31      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:

【华为OJ】【算法总篇章】


【华为OJ】【069-简单错误记录】

【工程下载】


题目描述

开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
处理:
    1、 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加;
    2、 超过16个字符的文件名称,只记录文件的最后有效16个字符;
    3、 输入的文件可能带路径,记录文件名称不能带路径。

输入描述

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

输出描述

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

输入例子

E:\V1R2\product\fpgadrive.c   1325

输出例子

fpgadrive.c 1325 1

算法实现

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

/**
 * Author: 王俊超
 * Time: 2016-04-24 13:28
 * CSDN: http://blog.csdn.net/derrantcm
 * Github: https://github.com/Wang-Jun-Chao
 * 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));
        }
    }
}

【华为OJ】【069-简单错误记录】

标签:

原文地址:http://blog.csdn.net/derrantcm/article/details/51422059

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!