打印下面给出的第n行

时间:2015-07-29 10:20:42

标签: java

我有这个代码来查找给定的行并打印下面的5行。我想修改它,而是打印下面的第n行。

示例:

如果我想找到包含猫的线,我想在它下面打印第二行,它会打印“猪”#。或者如果我想打印下面的第一行,它会打印出“狗”。

或者,如果给定的行包含' dog'我想打印下面的第一行,它会打印“猪”。

以下是代码:

if (line.contains("string")) {
    for (int a = 0; in.hasNextLine() && a < 6; a++) {
         System.out.println(line);
         line = in.nextLine();
    }
}

我如何修改它以做我想要的?感谢。

2 个答案:

答案 0 :(得分:0)

存储行号(lineNum),然后循环直到达到该行号。然后从line的最后一次迭代中打印nextLine()中最后存储的行。

public void printLineN(int lineNum) {

    if ( line.contains("string") ) {
        for (int a = 0; in.hasNextLine() && a <= lineNum; a++)
            line = in.nextLine();

        System.out.println(line);
    }
}

或者,使用LineNumberReader&#39; s getLineNumber()

答案 1 :(得分:0)

您可以执行以下操作:

String word = ..
int n = ...

if (line.contains(word)) {
    int a = 0;
    while (in.hashNextLine && a++ != n)
        line = in.nextLine();

    if (a == n) {
        System.out.println(line);
    } 
    else {
        System.out.println("Error: There is only " + a + " entries after the word " + word);
    }    
}

找到单词后,while循环将尝试将读者推进到找到单词后的第n行。如果有足够的行可用,则会打印第n行,否则将打印错误。