Java BufferedReader循环不正确

Java BufferedReader循环不正确,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")).getAttrib

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

我将网页的输出与文本文件的内容进行比较。我有以下代码,对于网页中的每个结果,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)
等文件的其余部分

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());
}

所以我想知道我做了什么noob的事情,我如何修复它,使它只通过文件一次,并且所有内容都与来自网页的内容相匹配?

它通过每个网页,从docOne到docNine,在文本文件中的每一行。即,它将所有九个文件与第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);
然而,这会使你的代码比现在更难阅读。应该考虑使用集合(或者甚至是数组)。


[编辑]根据gparyani的建议,您不需要显式调用
br.close()
。这里的详细信息

他正在使用try with resources,这是Java 7中新增的,它会自动调用
close()
,因此无需显式调用
close()
。(在试用参考资料之前的旧版本中,您需要显式地调用它,但现在不需要了。)@gparyani谢谢,我还没有看到。很高兴知道。您不需要在
try
块末尾调用
br.close()
,因为您正在使用try with resources(将参数传递给
try
语句),它会自动关闭
br