我正在做作业,我必须用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();
}
}
答案 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