我正在对文本文件进行自定义验证。第一次对整个文件进行验证。如果有错误,则显示在另一个 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
可以更简单地解决您的问题:
- 创建
TreeMap<Integer, String>
并将其命名为errors
。 (键为行号,值为错误信息。) - 解析文件一次并填充
errors
- 映射发现的错误(和行)
当文件的一部分可见时,您可以使用 subMap
获取该部分中的错误的方法:
SortedMap<Integer, String> visibleErrors = errors.subMap(fromLine, toLine + 1);
关于java - 捕获以前的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9285081/