2015-06-07 37 views
3

此代碼的工作原理和打印行,但我希望它打印下一行。Java:如何打印找到的字符串的下一行

import java.io.*; 

public class SearchTextFile { 
    // 
    public static void main(String args[]) throws Exception { 
     int tokencount; 
     FileReader fr = new FileReader("c:\\searchtxt.txt"); 
     BufferedReader br = new BufferedReader(fr); 
     String s; 
     int linecount = 0; 

     String keyword = "something"; 
     String line; 

     while ((s = br.readLine()) != null) { 
      if (s.contains(keyword)) 
       System.out.println(s); 

     } 
    } 
} 

任何幫助將是偉大的!

+0

因此...閱讀下一行並打印它!這裏的實際問題是什麼? –

回答

2

你應該修改這部分代碼:

while ((s=br.readLine())!=null) { 
    if(s.contains(keyword)) 
     System.out.println(s); 
} 

在這裏你正在打印包含關鍵字的行。既然您想要打印下一行,請使用BufferedReaderif條件內再次讀取下一行。因此,它會是這樣的:

while ((s=br.readLine())!=null) { 
    if(s.contains(keyword)) { 
     //System.out.println(s); 
     String nextLine = br.readLine(); 
     System.out.println(nextLine); 
    } 
} 
0

要打印keyword後線找到我會做一些簡單的像這樣:

boolean foundString = false; 
while ((s = br.readLine()) != null) { 
    if (s.contains(keyword)) { 
     System.out.println(s); 
     foundString = true; 
    } else if (foundString) { 
     System.out.println(s); 
     foundString = false; 
    } 
} 
0
if(s.contains(keyword)) 
    System.out.println(br.readline()); 
+0

大部分是正確的...... –

2
boolean isFound = false; 
    String line = null; 


    while (line = br.readline() != null){ 
     if(isFound){ 
      System.out.print(line) 
      isFound = false; 
     } 

     if(line.contains(keyword)){ 
      isFound = true; 
     } 

    } 
+0

解釋你的代碼如何工作以及它的功能會很好。 – JonasCz

+0

我的代碼和Anindya Dutta提交的代碼之間的區別在於,當您執行br.readLine()時,您會通過文件提前讀取光標。因此,通過在同一個if塊中打印下一行,您正在檢查關鍵字,您也失去了檢查關鍵字的下一行的機會。 我的代碼將讀取該行並檢查它是否包含關鍵字。如果是,它會設置一個布爾值,用於打印下一行。打印下一行後,它會檢查關鍵字的同一行。 –

+0

我的代碼將檢查關鍵字的每一行,並且「選定」答案不會檢查包含該關鍵字的行後面的行。 –