我正在尝试了解网络应用程序(L10N)自动化本地化测试的可能性。首先,我们决定看看是否可以在不打开应用程序的情况下在文件中收集 HTML 纯文本(母语)并将其与我们拥有的术语表进行比较。
我可以使用 jsoup
获取纯文本。现在我尝试将这两个文件与以下代码进行比较:
import java.io.*;
import java.util.*;
class CompareFiles{
public static void main(String args[]) throws Exception{
Scanner kb = new Scanner(System.in);
String name;
String curr;
java.io.File dictionary = new java.io.File("./src/main/resources/Google_JP.txt");
Scanner dictScanner = new Scanner(dictionary);
java.io.File list = new java.io.File("./src/main/resources/Google_JP_HTML.txt");
Scanner listScanner = new Scanner(list);
try
{
while(dictScanner.hasNextLine()){
System.out.println("inside dictonary scanner");
curr=dictScanner.next();
while(listScanner.hasNextLine()){
System.out.println("inside list scanner");
name=listScanner.next();
if(curr.contains(name)) System.out.println(name);
}
}
}
catch(NoSuchElementException e)
{
e.printStackTrace();
}
}
}
现在上面代码的问题是,因为我在 name=listScanner.next();
上收到 NoSuchElementException
,所以我尝试处理异常并关闭扫描仪。这样,它只比较 html 文件的第一个单词。我应该如何让它工作,以便它显示所有匹配的单词?
此外,我不确定我是否遵循正确的方法来满足要求。
最佳答案
在我看来,好像您需要在每次循环迭代中重新初始化扫描仪,因为您在第一次迭代中耗尽了扫描仪
发生的事情似乎是:
- curr 是 dictScanner 的第一行
- 循环 nameScanner
- 当前与所有名称进行比较
- 名称扫描仪现在为空
- 当前设置为第二行
- 循环遍历已耗尽的 nameScanner
建议的更改:
import java.io.*;
import java.util.*;
class CompareFiles{
public static void main(String args[]) throws Exception{
Scanner kb = new Scanner(System.in);
String name;
String curr;
java.io.File dictionary = new java.io.File("./src/main/resources/Google_JP.txt");
Scanner dictScanner = new Scanner(dictionary);
java.io.File list = new java.io.File("./src/main/resources/Google_JP_HTML.txt");
//Scanner listScanner = new Scanner(list);
try
{
while(dictScanner.hasNextLine()){
System.out.println("inside dictonary scanner");
curr=dictScanner.next();
try (Scanner listScanner = new Scanner(list);){
while(listScanner.hasNextLine()){
System.out.println("inside list scanner");
name=listScanner.next();
if(curr.contains(name)) System.out.println(name);
}
}
}
} catch(NoSuchElementException e) {
e.printStackTrace();
}
}
}
关于java - 使用 Java 扫描器比较两个文件时的 NoSuchElementExcpetion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33801322/