2016-11-30 12 views
1

テキストファイルに有限(10)の行数がある場合でも、ループが無限に実行されるのはなぜですか?なぜ私のwhileループは無限に実行されますか?

import java.util.*; 
import java.io.*; 
public class numberOfLines{ 
    public static void main(String[] args){ 
     try{ 
      Scanner cs=new Scanner(new File("poem.txt")); 
      int i=0; 
      while(cs.hasNextLine()){ 
      System.out.println(i); 
      } 
     } catch(FileNotFoundException e){ 
      System.out.print("File not found"); 
      } 
    } 
} 

ありがとうございました。

+4

あなたは実際に次の行を読むことはないので、 'Scanner'は0行目にとどまり、' true'を返します。 – Zircon

+0

ちなみに、これはあなたが[ファイル内の行数]を数える方法です(http://stackoverflow.com/questions/453018/number-of-lines-in-a-file-in-java) –

+0

もしあなたは決して前進しません。答えは「まだありますか?」*決して変わることはありません。 – Andreas

答えて

2

cs.nextLine()に電話をかけることはありません。これは、スキャナーにある値を決して消費しないことを意味します。だからca.hasNextLine()は真を返す。

+1

私はフォローアップの質問をしています。なぜコードは常に0 ... –

+0

@ cricket_007をインクリメントしないので、 – Jens

+0

のように表示されます。単純な間違いを指摘するように感じただけです –

1

実際に行を読むには、cs.nextLine()のようなものを使用する必要があります。そうしないと、ファイルの内容が決して進まないので、常に行が残っています。

関連する問題