2017-12-06 1 views
2

私は複数行の情報(後で解析するまでは文字列)を受け付けています。例:Java Infinite While Loop

1 5 0 
2 9 6 
2 9 1 

私はこの方法で各行を操作する必要があるため、このコードを使用して行を区切ります。

Scanner scan = new Scanner(System.in); 
System.out.println("Enter input: "); 
ArrayList<String> lines = new ArrayList<String>(); 


while(scan.hasNextLine()) { 
    lines.add(scan.nextLine()); 
} 

System.out.println(lines.get(0)); 

そして、私はこれをテストし、それは確かに私の入力の別々のそれぞれの行をし、私のArrayList、scan.nextLine()は無限ループを引き起こして、複数の入力をチェックしていると言い、whileループの内側しかし一部にそれを追加します。 どうすれば修正できますか?

+0

いつそれが停止すると思われましたか? – shmosel

+0

複数行入力のすべての行が分離された後。 –

+0

入力するまで行がありません。行を入力し終わったら、プログラムはどのように知っていますか? – shmosel

答えて

1

スキャナには常に複数の行があるとみなされます。これは、コンソールにもっと多くの情報を入力できるためです。私の提案は、あなたのwhileループ内の空行を検出するか、プログラム終了時にプログラムに知らせる最初の文字として-1などのデフォルト文字を持つ行を持つことです。代わりに、ファイルの入力を使用して、実際に検出できる行数が増えるようにすることもできます。