java - 捕获以前的错误

标签 java arrays swing exception jtextarea

我正在对文本文件进行自定义验证。第一次对整个文件进行验证。如果有错误,则显示在另一个 JTextArea 中。之后,仅对可见部分进行验证。我的问题是我无法存储以前的错误并与当前的错误结合起来显示。例如,第一次,我收到错误 第1行、第5行、第6行、第100行、第500行。从下次开始,可见部分将是1-50行,仅对1-50行进行验证,因此100和500的错误将消失。我尝试将之前的错误存储在临时变量中,下一个问题是,现在这些错误将变为仅适用于 1-50,有人可以告诉我该怎么做吗?

我尝试过的代码,

      private void displayError() {
      errorText.setText(null); 
      String err = null;
      try{
        //tempErrors
        if(!prevErrors.isEmpty()){
            for(int i=0; i< prevErrors.size(); i++){
                err = prevErrors.get(i).toString();
                if(!errors.contains(err)){
                    errors.add(prevErrors.get(i).toString());
                }
            }
        }
    }
    catch(Exception ex){
        System.out.println(ex);
    }        

    Iterator it = errors.iterator();
    while(it.hasNext()){
        errorText.append(it.next() + "\n");
    }

    prevErrors = new ArrayList();        
    for(int i=0; i< errors.size(); i++){
       prevErrors.add(errors.get(i).toString());
    }
}

最佳答案

使用 TreeMap 可以更简单地解决您的问题:

  1. 创建 TreeMap<Integer, String> 并将其命名为errors 。 (键为行号,值为错误信息。)
  2. 解析文件一次并填充errors - 映射发现的错误(和行)

当文件的一部分可见时,您可以使用 subMap 获取该部分中的错误的方法:

SortedMap<Integer, String> visibleErrors = errors.subMap(fromLine, toLine + 1); 

关于java - 捕获以前的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9285081/

相关文章:

java - 仅当套件运行时测试才会出现 HttpMediaTypeNotAcceptableException

PHP explode 正在删除第一个数组值

java - GroupLayout 给 java swing 错误

java - JTable 的 TableModelListener 如何工作?

java - 如何修复我的平台游戏中的 NullPointerException?

java - 二进制搜索算法无法正常工作 - Java

arrays - 特定大小的 C 数组的 Swift 仿真

c++ - C++中数组char的初始化

java - 如何获取给定 LookAndFeel 的可用主题?

java - 关于为什么一件事有效以及为什么我以前的方法不起作用,我是否正确? (关于线程)