2015-06-07 34 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

我的代码将检查关键字的每一行,并且“选定”答案不会检查包含该关键字的行后面的行。 –