用Java打印文件中的行

用Java打印文件中的行,java,file,java.util.scanner,Java,File,Java.util.scanner,我正在制作一种方法,在文件中打印包含某个单词的行。如果参数是空字符串,则应打印整个文件 我已经让第一部分开始工作了。“else”语句中的所有内容都非常有效;它扫描每一行并打印参数中包含单词的行 但当输入一个空字符串(“”)作为参数“word”时,我无法让它打印整个文件。我不知道这是为什么 public void printLinesWhichContain(String word) { while (this.reader.hasNextLine()) { String

我正在制作一种方法,在文件中打印包含某个单词的行。如果参数是空字符串,则应打印整个文件

我已经让第一部分开始工作了。“else”语句中的所有内容都非常有效;它扫描每一行并打印参数中包含单词的行

但当输入一个空字符串(“”)作为参数“word”时,我无法让它打印整个文件。我不知道这是为什么

public void printLinesWhichContain(String word) {
    while (this.reader.hasNextLine()) {
        String line = this.reader.nextLine();
        if (word.isEmpty()) {
            System.out.println(line);
        } else {
            Scanner lineReader = new Scanner(line);
            while (lineReader.hasNext()) {
                if (lineReader.next().equals(word)) {
                    System.out.println(line);
                }
            }
        }
    }
}

一旦获得字符串格式的行,就可以使用indexOf方法获取单词的索引

我不会为每一行创建一个扫描仪

我的意思是你可能想改变其他部分如下

int indexOfWord = line.indexOf(word);
            if (indexOfWord >= 0) 
            {
                 System.out.println(line);
            }

如何准确地调用printLinesWhichContain方法?包含(“”)的打印行?请尝试
“”。equals(word)
。如果我将空字符串
“”
作为其参数传递,则此方法对我很有效。你能告诉我们你是如何使用它的吗?我想你需要按ctrl+I来输入空行,而不是每次使用
if(line.contains(word))System.out.println(line)时创建一个新的扫描仪否则,其余代码就可以了。这与问题所问的内容无关。如果参数为“”,它将打印该行。这不是问题所在吗?如果单词不是空字符串“”,而是一个不包含在行中的单词?它将打印该行,但未更正。谢谢将if(indexoford!=-1)更改为if(indexoford>=0)。