java - BufferedReader 循环不正确

标签 java bufferedreader

我知道这可能很简单,但我似乎找不到我做错了什么。

我正在将网页的输出与文本文件的内容进行比较。我有以下代码,看来对于网页中的每个结果,bufferedreader 都会循环一次。一旦我发布代码和结果,这将不再那么困惑。

代码

String docOne = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div/div/h5")).getAttribute("textContent").toString();
String docTwo = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div[2]/div/h5")).getAttribute("textContent").toString();
String docThree = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div[3]/div/h5")).getAttribute("textContent").toString();
String docFour = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div[4]/div/h5")).getAttribute("textContent").toString();
String docFive = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div[5]/div/h5")).getAttribute("textContent").toString();
String docSix = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div[6]/div/h5")).getAttribute("textContent").toString();
String docSeven = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div[7]/div/h5")).getAttribute("textContent").toString();
String docEight = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div[8]/div/h5")).getAttribute("textContent").toString();
String docNine = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div[2]/div/div[2]/div/div/div/h5")).getAttribute("textContent").toString();

try (BufferedReader br = new BufferedReader(new FileReader("/Users/vhaislsalisc/Documents/CDWProductionDomainsRequiredDocs.txt"))) {
    String sCurrentLine;


    while ((sCurrentLine = br.readLine()) != null) {

        System.out.println("Webpage: " + docOne + " Required Doc: " + sCurrentLine);
        System.out.println("Webpage: " + docTwo + " Required Doc: " + sCurrentLine);
        System.out.println("Webpage: " + docThree + " Required Doc: " + sCurrentLine);
        System.out.println("Webpage: " + docFour + " Required Doc: " + sCurrentLine);
        System.out.println("Webpage: " + docFive + " Required Doc: " + sCurrentLine);
        System.out.println("Webpage: " + docSix + " Required Doc: " + sCurrentLine);
        System.out.println("Webpage: " + docSeven + " Required Doc: " + sCurrentLine);
        System.out.println("Webpage: " + docEight + " Required Doc: " + sCurrentLine);
        System.out.println("Webpage: " + docNine + " Required Doc: " + sCurrentLine);
    }
    br.close();
} catch (IOException e) {
    System.err.println("Error: " + e.getMessage());
}

结果

Webpage: Research Request Memo (File Document) Required Doc: Research Request Memo (File Document)
Webpage: Research Study Institutional Review Board (IRB) Approval Letter (File Document) Required Doc: Research Request Memo (File Document)
Webpage: Sample Informed Consent and HIPAA Authorization (File Document) Required Doc: Research Request Memo (File Document)
Webpage: Research and Development (RD) Committee Approval Letter (File Document) Required Doc: Research Request Memo (File Document)
Webpage: Data Use Agreement (File Document) Required Doc: Research Request Memo (File Document)
Webpage: IRB Approval of Waiver of HIPAA-Compliant Authorization (File Document) Required Doc: Research Request Memo (File Document)
Webpage: Research Protocol (File Document) Required Doc: Research Request Memo (File Document)
Webpage: CDW-Domain Checklist (File Document) Required Doc: Research Request Memo (File Document)
Webpage: VA Form 9957 (File Document) Required Doc: Research Request Memo (File Document)
Webpage: Research Request Memo (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: Research Study Institutional Review Board (IRB) Approval Letter (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: Sample Informed Consent and HIPAA Authorization (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: Research and Development (RD) Committee Approval Letter (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: Data Use Agreement (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: IRB Approval of Waiver of HIPAA-Compliant Authorization (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: Research Protocol (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: CDW-Domain Checklist (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: VA Form 9957 (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)

文件的其余部分依此类推

所以只是想知道我做了什么菜鸟事情,以及如何修复它,以便它只遍历文件一次并且所有内容都与来自网页的内容匹配?

最佳答案

它会遍历文本文件中每一行从 docOne 到 docNine 的每个网页。 IE。它将所有九个文件与第 1 行进行比较,然后与第 2 行进行比较,依此类推。

由于您已经粘贴了从文本文件中读取的前 2 行,并且它们与前 2 个网页相匹配,因此我假设您想要的是将每一行读取一次并将其仅与一个网页进行比较。然后你需要做的就是简单地失去 while 循环并在显示每个结果后调用 readline :

    sCurrentLine = br.readLine();
    System.out.println("Webpage: " + docOne + " Required Doc: " + sCurrentLine);
    sCurrentLine = br.readLine();
    System.out.println("Webpage: " + docTwo + " Required Doc: " + sCurrentLine);

但是,这会使您的代码比现在更难阅读。您应该考虑使用 Collection(甚至数组)来代替。

[编辑] 根据 gparyani 的建议,您不需要显式调用 br.close() 。详情请点击http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

关于java - BufferedReader 循环不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18262525/

相关文章:

java.sql.SQLException : SQL Server version 8 is not supported by this driver. SQL 状态 = 08S01,错误代码 = 0

java - Pi4j 风速计 - 每个时间间隔的计数器

java - 如何将 int [] 数组转换为 java.sql.Array

java - BufferedWriter 在 OS X 上未刷新到套接字的输出

java - 分布式 jar 文件未获取我的 .txt 文件

java - 有没有办法从用户输入中获取多行文本?

java - 更正 Book 类以获取 getBooksByAuthor 方法的输出

java - 如何使用相同的变量名实例化不同类的对象

JAVA 客户端服务器读取带有新行的字符串

java - 通过 processbuilder 进行多进程通信,卡住在 BufferedReader() 的 readline() 处