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

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

У меня проблема в том, что я получаю «Исключение в потоке «основной» 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)
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Другие вопросы по теме