/
DevDenzo
/
StudentFileManager
Обзор
Документация
Войти
/
DevDenzo
/
StudentFileManager
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Main.java
78 строк
3 KB
Denis Sklyarskij
task done
13 дек 2025, 19:41
13 дек 2025, 19:41
19403be
Код
Авторство
О чём код?
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; public class Main { public static void main(String[] args) { List < Student > students = new ArrayList < > (); try (FileInputStream fis = new FileInputStream("students.txt"); InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8); BufferedReader reader = new BufferedReader(isr)) { String line; while ((line = reader.readLine()) != null) { if (line.trim().isEmpty()) continue; String[] parts = line.split(",", 2); String name = parts[0].trim(); String booksPart = parts[1]; String[] bookStrings = booksPart.split(";"); List < Book > bookList = new ArrayList < > (); for (String bookStr: bookStrings) { String[] bookData = bookStr.split(",", 3); if (bookData.length == 3) { try { Book book = new Book( bookData[0].trim(), Integer.parseInt(bookData[1].trim()), Integer.parseInt(bookData[2].trim()) ); bookList.add(book); } catch (Exception e) { System.err.println("Возникла ошибка при создании новой книги: " + bookStr); } } else { System.err.println("Ожидался массив длиной 3, а получен: " + bookStr); } } students.add(new Student(name, bookList)); } } catch (IOException e) { System.err.println("Ошибка чтения файла: " + e.getMessage()); } students .forEach(student -> { AtomicInteger counter = new AtomicInteger(1); System.out.println("Список книг студента: " + student.getName()); student.getBooks().stream() .distinct() .filter(book -> book.getYear() > 2000) .sorted(Comparator.comparing(Book::getPages)) .limit(3) .peek(book -> System.out.println( "[" + counter.getAndIncrement() + "] " + "Название: " + book.getTitle() + ", год: " + book.getYear() + ", страниц: " + book.getPages() )) /*.forEach(book -> {});*/ .map(Book::getYear) .findFirst() .ifPresentOrElse( year -> System.out.println("Результат Optional от года: " + year), () -> System.out.println("У студента отстутствуют книги напечатанные после 2000 года") ); }); } }