web-dev-qa-db-fra.com

Lire l'entrée ligne par ligne

Comment lire une entrée ligne par ligne en Java? J'ai cherché et jusqu'à présent, j'ai ceci:

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

Le problème est qu'il ne lit pas la dernière ligne. Donc, si je saisis

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

sa sortie ne sera

10 5 4 20 11 6 55 3
17
spacitron

Idéalement, vous devez ajouter un println () final car, par défaut, System.out utilise un PrintStream qui ne se vide que lorsqu'un retour à la ligne est envoyé. Voir Quand/pourquoi appeler System.out.flush () en Java

while (input.hasNext()) {
    System.out.print(input.nextLine());
}
System.out.println();

Bien qu'il existe d'autres raisons possibles à votre problème.

14
Dan Gravell

Les suggestions précédemment publiées ont des problèmes de faute de frappe (orthographe hasNextLine) et de nouvelle ligne (println avait besoin de chaque ligne). Voici la version corrigée -

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());
        }
    }
}
2
Robert Field

Essayez d'utiliser la méthode hasnextLine().

while (input.hasnextLine()){


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


 }
1
Kumar Vivek Mitra