Hej, tworzę program, który między innymi ma wczytywać dane od użytkownika.
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class NewTask {
public void createTask() {
System.out.println("Wprowadź treść zadania (zakończ wprowadzanie używając 'Ctrl+D' na Unix/Linux/Mac lub 'Ctrl+Z' na Windows):");
StringBuilder contentBuilder = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
String line;
while ((line = reader.readLine()) != null) {
contentBuilder.append(line).append(System.lineSeparator());
}
} catch (IOException e) {
System.out.println("Błąd przy odczycie danych: " + e.getMessage());
}
Scanner scanner = new Scanner(System.in);
String content = contentBuilder.toString();
Task task = new Task(content);
String fileName = addNameOfFile(scanner);
saveTaskToFile(task, fileName + ".txt");
}
private String addNameOfFile(Scanner scanner) {
System.out.print("Podaj nazwę pliku do zapisania (bez rozszerzenia .txt): ");
String nameOfFile = scanner.next();
return nameOfFile;
}
private void saveTaskToFile(Task task, String filename) {
try (FileWriter writer = new FileWriter(filename)) {
writer.write(task.getContent());
System.out.println("Zadanie zapisane do pliku: " + filename);
} catch (IOException e) {
System.out.println("Błąd przy zapisywaniu zadania: " + e.getMessage());
}
}
}
Po wprowadzaniu treści zadania i wciśnięciu ctrl+d nie mogę podać nazwy pliku, od razu rzucany jest wyjątek.
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:945)
at java.base/java.util.Scanner.next(Scanner.java:1486)
at NewTask.addNameOfFile(NewTask.java:37)
at NewTask.createTask(NewTask.java:30)
at TaskEditorManager.run(TaskEditorManager.java:26)
at MainManager.run(MainManager.java:26)
at Main.main(Main.java:6)
Ktoś wie co robię nie tak?