2015-10-09 3 views
-1

У меня вопрос о методе nextLine(). Я знаю, что он иногда не читает строку, но читает разделитель строк, например. <enter>. И поэтому вам нужно позвонить .nextLine() дважды, чтобы «съесть» разделитель строк, а затем получить следующую строку. Но как это будет работать в цикле? Как я могу получить последнюю строку файла с помощью этого метода? Должен ли я использовать next() вместо этого?Проблемы с nextLine в java.

while (fileStream1.hasNextLine()){ 
     counterString = fileStream1.nextLine(); 
     ++lines;    
    }   
+2

испытанных Вы это и видите ли вы проблему? – Ryan

+0

Как вы думаете, какая линия? –

+0

проблема, о которой вы упоминали о следующей строке, произойдет в случае следующих() и nextInt() со сканером. Я никогда не видел никаких проблем с файловым потоком. – NightsWatch

ответ

0

Просто вы можете написать что-то вроде этого:

while (fileStream1.hasNextLine()){ 
    counterString = fileStream1.nextLine(); 
    if(!counterString.toString().equal("\n")) 
     ++lines;    
} 
+0

Equals * ... Typo –

0

Попробуйте:

while (fileStream1.hasNextLine()){ 
    counterString = fileStream1.nextLine(); 

    if (counterString.Equals("\n") || 
     counterString.Equals("\r\n") || 
     counterString.Equals("\r")) { 
     continue; 
    } 

    ++lines;    
} 

Чтобы пропустить все строки, которые только \n, \r\n или \r

0

Если мы говорим F.E. в частности о сканере, next() вернет следующий токен, который обычно представляет собой любое слово или символ, разделенные пробелами. Если вам нужна непустая строка, он бы, вероятно, выглядеть следующим образом:

String s; 
String lastLine; 
int numOfNonEmptyLines = 0; 

while(scan.hasNextLine()) { 

    s = scan.nextLine(); 
    if(s.trim().isEmpty()) { 
     continue; 
    } 

    lastLine = s; 
    numOfNonEmptyLines++; 
    //do whatever you want with the line 
} 

lastLine //this is the last line... 
Смежные вопросы