Невозможно получить длину каждой отдельной строки из файла, используя только заданный импорт

#java

#java

Вопрос:

Эта программа считывает файл с именем «Readme.txt » и отображает каждую строку с номерами строк, а затем отображает среднюю длину строки после чтения всех строк.

Проблема, с которой я сталкиваюсь, заключается в том, что я получаю «Исключение в потоке»main» java.util.NoSuchElementException: строка не найдена»»

ПРИМЕЧАНИЕ: я предполагаю использовать импорт только в своем коде, ничего больше.

Я пытался использовать sc.nextLine().length() для определения длины каждой строки, однако я сталкиваюсь с этим сообщением об ошибке.

Вот мой код:

 import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class LineReader {

public static void main(String[] args) throws IOException {

    Scanner sc = new Scanner(new File("Readme.txt"));
    int count = 0;
    double total = 0;
    while (sc.hasNextLine()) {
        count  ;
        total  = sc.nextLine().length();
        System.out.println(count   " "   sc.nextLine());


    }

    double avg = total / count;
    System.out.println("The average line length is "   avg );

}
  

 Expected: 
1 I love pizza 
2 Bacon is delicious 
3 I am hungry 
The average line length is 13.6

Actual:
1 I love pizza
Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
    at LineReader.main(LineReader.java:15)
  

Ответ №1:

Каждый раз, когда вы вызываете Scanner.nextLine() , вы потребляете одну строку. В настоящее время вы вызываете его дважды в своем цикле. Сохраните ссылку локально. Нравится,

 while (sc.hasNextLine()) {
    String line = sc.nextLine();
    count  ;
    total  = line.length();
    System.out.println(count   " "   line);
}