web-dev-qa-db-ja.com

入力を1行ずつ読み取る

Javaで行ごとに入力を読み取るにはどうすればよいですか?私は検索し、これまでのところこれを持っています:

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

これの問題は、最後の行を読み取らないことです。だから私が入力した場合

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

その出力は

10 5 4 20 11 6 55 3
17
spacitron

デフォルトでは、System.outは改行が送信されたときにのみフラッシュするPrintStreamを使用するため、理想的には最後のprintln()を追加する必要があります。 JavaでSystem.out.flush()を呼び出すタイミングと理由を参照してください

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

問題には他の理由が考えられますが。

14
Dan Gravell

以前に投稿された提案には、タイプミス(hasNextLineスペル)と新しい行の印刷(printlnは各行が必要)の問題があります。以下は修正されたバージョンです-

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

hasnextLine()メソッドを使用してみてください。

while (input.hasnextLine()){


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


 }
1