问题描述:

I'm working on homework and i have to read input with nextLine() method. When i copied all input lines and pasted on console, the program don't read final line. How can i solve this problem.

What i need :

line1

line2

line3

What i get:

line1

line2

Here is my code

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();

}

}

网友答案:

I don't see any reason to check for null - you should be using scn.hasNextLine() instead, which will stop iteration when there are no more lines in the file for the Scanner to read.

Here's a code sample - we move the reading of System.in into the loop, and add a stopping condition so you don't get an infinite loop.

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

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

How about

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.
}

When I run

$ cat > text
line1
line2
line3
^D
$ java -cp . Example < text
line1
line2
line3
相关阅读:
Top