Java:如何打印找到的字符串的下一行
这段代码可以工作,它可以打印这一行,但我希望它可以打印下一行Java:如何打印找到的字符串的下一行,java,input,Java,Input,这段代码可以工作,它可以打印这一行,但我希望它可以打印下一行 import java.io.*; public class SearchTextFile { // public static void main(String args[]) throws Exception { int tokencount; FileReader fr = new FileReader("c:\\searchtxt.txt"); Buffered
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);
}
}
}
任何帮助都会很好 要在找到
关键字
后打印该行,我需要执行以下简单操作:
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;
}
}
while ((s=br.readLine())!=null) {
if(s.contains(keyword)) {
//System.out.println(s);
String nextLine = br.readLine();
System.out.println(nextLine);
}
}
您应该修改代码的这一部分:
while ((s=br.readLine())!=null) {
if(s.contains(keyword))
System.out.println(s);
}
这里您正在打印包含关键字的行。由于要打印下一行,请使用BufferedReader
在if
条件内再次读取下一行。因此,它将是这样的:
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;
}
}
while ((s=br.readLine())!=null) {
if(s.contains(keyword)) {
//System.out.println(s);
String nextLine = br.readLine();
System.out.println(nextLine);
}
}
所以读下一行并打印出来!这里的实际问题是什么?请解释一下您的代码是如何工作的,以及它的作用。我的代码与Anidya Dutta提交的代码之间的区别在于,当您执行br.readLine()时,您可以让游标提前读取文件。因此,如果在同一个if块中打印下一行来检查关键字,那么就失去了检查下一行关键字的机会。我的代码将读取该行并检查它是否包含关键字。如果这样做,它将设置一个布尔值,用于在打印下一行后打印下一行,然后也检查同一行中的关键字。我的代码将检查每一行中的关键字,“选定”答案将不会检查包含关键字的行后的行。