#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);
}