2012-08-07 5 views
9

Jak odczytać wiersz wejścia wiersz po Jenie? Szukałem i do tej pory mam to:Odczytaj linię wejściową wierszem

import java.util.Scanner; 

public class MatrixReader { 
    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     while (input.hasNext()) { 
      System.out.print(input.nextLine()); 
     } 
    } 

Problem polega na tym, że nie czyta ostatniej linii. Więc jeśli wejście

10 5 4 20 
11 6 55 3 
9 33 27 16 

jego produkcja będzie tylko

10 5 4 20 11 6 55 3 
+5

Działa dobrze dla mnie przy użyciu dokładnego kodu. Nie zapomnij nacisnąć Enter. – Vulcan

+0

Dlaczego nie "Scanner.hasNextLine"? – oldrinb

+0

Myślę, że skopiowałeś niż wkleił całą zmienną wejściową naraz –

Odpowiedz

9

Idealnie należy dodać ostateczną println(), ponieważ domyślnie System.out używa PrintStream że opróżnia jedynie, gdy nowa linia zostanie wysłana. Zobacz When/why to call System.out.flush() in Java

while (input.hasNext()) { 
    System.out.print(input.nextLine()); 
} 
System.out.println(); 
Mimo że istnieją inne możliwe przyczyny problemu.

+0

jak do diabła ta odpowiedź odpowiada na pytanie? – Bohdan

1

Spróbuj użyć metody hasnextLine().

while (input.hasnextLine()){ 


    System.out.print(input.nextLine()); 


} 
0

Wcześniej pisał sugestii literówkę (hasNextLine pisownia) i nowy druk wiersza (println potrzebna każda linia) problemy. Poniżej znajduje się poprawiona wersja -

import java.util.Scanner; 

public class XXXX { 
    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     while (input.hasNextLine()){ 
      System.out.println(input.nextLine()); 
     } 
    } 
}