Эта программа читает файл с именем «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)
Каждый раз, когда вы звоните Scanner.nextLine()
, вы потребляете одну линию. В настоящее время вы вызываете его дважды в своем цикле. Сохраните ссылку локально. Нравиться,
while (sc.hasNextLine()) {
String line = sc.nextLine();
count++;
total += line.length();
System.out.println(count + " " + line);
}