Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:如何打印找到的字符串的下一行_Java_Input - Fatal编程技术网

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块中打印下一行来检查关键字,那么就失去了检查下一行关键字的机会。我的代码将读取该行并检查它是否包含关键字。如果这样做,它将设置一个布尔值,用于在打印下一行后打印下一行,然后也检查同一行中的关键字。我的代码将检查每一行中的关键字,“选定”答案将不会检查包含关键字的行后的行。