如何使用Scanner.nextLine()读取最后一行?

时间:2014-03-30 16:05:39

标签: java

我正在做作业,我必须用nextLine()方法读取输入。当我复制所有输入行并粘贴到控制台上时,程序不会读取最后一行。我该如何解决这个问题。

我需要什么:

line1
line2
line3

我得到了什么:

line1
line2

这是我的代码

public class Name{
    public static void main(String [] args){
        Scanner scn = new Scanner(System.in);
        str = scn.nextLine();

        while(scn.hasNextLine()){
        .
        .
        .
        str = scn.nextLine();
        }
        scn.close();
    }
}

2 个答案:

答案 0 :(得分:4)

我认为没有理由检查null - 您应该使用scn.hasNextLine()代替,当Scanner文件中没有更多行时,这将停止迭代阅读。

这是一个代码示例 - 我们将System.in的读数移动到循环中,并添加一个停止条件,这样就不会产生无限循环。

Scanner scn = new Scanner(System.in);
String str;

while(scn.hasNextLine()){
    str = scn.nextLine();
    System.out.println(str);
    if(str.equalsIgnoreCase("stop")) {
        break;
    }
}

答案 1 :(得分:3)

怎么样

public void main(String [] args){
    Scanner scn = new Scanner(System.in);
    while (scn.hasNextLine()) {
        String str = scn.nextLine();
        System.out.println(str);
    }
    // don't close System.in as we didn't create it.
}

当我跑步时

$ cat > text
line1
line2
line3
^D
$ java -cp . Example < text
line1
line2
line3