Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите разобраться в ошибке Java

Милана Профи (913), открыт 1 неделю назад
Задание:
Дан текстовый файл. Напечатать все строки, длина которых меньше заданного числа
Разработать алгоритм и написать программу Java, выполнить ее отладку и тестирование.
Интерфейс программ должен быть понятен (содержать пояснения для пользователя по исходным данным и результатам).
Тестовые файлы будут предварительно созданы в текстовом редакторе
«Блокнот».

Код:
import java.io .*;
import java.util.Scanner;

public class LR12 {
public static void main(String[] args) {
Scanner userInput = new Scanner( System.in );

// Просим пользователя ввести имя текстового файла
System.out.println("Введите имя текстового файла, включая расширение (например, input.txt):");
String fileName = userInput.nextLine();

// Просим пользователя ввести пороговую длину строки
System.out.println("Введите максимальную длину строки:");
int maxLength = userInput.nextInt();

// Процесс чтения файла и фильтрации строк по длине
try {
File file = new File(fileName);
Scanner fileScanner = new Scanner(file);
while (fileScanner.hasNextLine()) {
String line = fileScanner.nextLine();
if (line.length() < maxLength) {
System.out.println(line);
}
}
fileScanner.close();
} catch (FileNotFoundException e) {
System.out.println("Файл не найден: " + e.getMessage());
}

userInput.close();
}
}

При тестировании кода в Apache NetBeans IDE 20 выдает ошибку, скрин во вложении
3 ответа
Chat GPT-4 Мудрец (14129) 1 неделю назад
Ошибка, которую вы видите, связана с тем, что после ввода пользователем максимальной длины строки userInput.nextInt(); в консоли остается символ новой строки (\n). Этот символ не считывается fileScanner.hasNextLine(), поэтому программа "зависает", ожидая ввода от пользователя.

Решение:

Чтобы исправить эту ошибку, добавьте строчку userInput.nextLine(); после userInput.nextInt();, которая очистит буфер ввода и удалит символ новой строки.

Исправленный код:

import java.io.*;
import java.util.Scanner;

public class LR12 {
public static void main(String[] args) {
Scanner userInput = new Scanner(System.in);

// Просим пользователя ввести имя текстового файла
System.out.println("Введите имя текстового файла, включая расширение (например, input.txt):");
String fileName = userInput.nextLine();

// Просим пользователя ввести пороговую длину строки
System.out.println("Введите максимальную длину строки:");
int maxLength = userInput.nextInt();
userInput.nextLine(); // Добавляем строку для очистки буфера ввода

// Процесс чтения файла и фильтрации строк по длине
try {
File file = new File(fileName);
Scanner fileScanner = new Scanner(file);
while (fileScanner.hasNextLine()) {
String line = fileScanner.nextLine();
if (line.length() < maxLength) {
System.out.println(line);
}
}
fileScanner.close();
} catch (FileNotFoundException e) {
System.out.println("Файл не найден: " + e.getMessage());
}

userInput.close();
}
}


Дополнительные замечания:

* Закрытие Scanner: Важно закрывать Scanner (в данном случае fileScanner) после использования, чтобы освободить ресурсы.
* Обработка ошибок: В коде реализована обработка исключения FileNotFoundException - это хорошая практика.
* Тестирование: Создайте тестовые файлы с разным содержимым и проверьте, что программа работает корректно.
МиланаПрофи (913) 1 неделю назад
Не помогло, ошибки сохраняются
МиланаПрофи (913) 1 неделю назад
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.11.0:compile (default-compile) on project project1: Compilation failure: Compilation failure:
/C:/Users/milan/OneDrive/Документы/NetBeansProjects/project1/src/main/java/FunctionCalculator.java:[5,27] constructor Scanner in class Scanner cannot be applied to given types;
required: no arguments
found: java.io .InputStream
reason: actual and formal argument lists differ in length
/C:/Users/milan/OneDrive/Документы/NetBeansProjects/project1/src/main/java/FunctionCalculator.java:[7,27] cannot find symbol
symbol: method nextDouble()
location: variable scanner of type Scanner
-> [Help 1]
Андрей Панарин Искусственный Интеллект (235085) 1 неделю назад
У меня эта программа работает.

Компилятор указывает на ошибки в файле FunctionCalculator.java, а у вас код класса LR12.
Давайте откроем проблемный класс FunctionCalculator и посмотрим в нем.
Александр Искусственный Интеллект (293828) 1 неделю назад
картинка ошибки никак не относится к показанному коду....
Похожие вопросы