2016-11-30 3 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

Вы никогда не читали следующую строку, поэтому «Сканер» остается в строке 0 и возвращает «true». – Zircon

+0

Кстати, так вы считаете [количество строк в файле] (http://stackoverflow.com/questions/453018/number-of-lines-in-a-file-in-java) –

+0

Если вы никогда не двигаетесь вперед, ответ на вопрос: «Мы еще там?» * никогда не изменится. – Andreas

ответ

2

Потому что вы никогда не звоните cs.nextLine(). Это означает, что вы никогда не потребляете значение, которое находится в сканере. Так что ca.hasNextLine() когда-либо возвращает true;

+1

Я задаю следующий вопрос. Почему код всегда печатает 0 ... –

+0

@ cricket_007, потому что i никогда не увеличивается. – Jens

+0

Справа. Просто хотелось указать, что простая ошибка –

1

Вам нужно использовать что-то вроде cs.nextLine(), чтобы на самом деле прочитать строку, иначе всегда остается строка, так как вы никогда не продвигаетесь через содержимое файла.

Смежные вопросы