JC: Чтение из файла, сортировка и вывод в консоль

Напишите консольное приложение, которое считывает пользователей из файла и делает из них список объектов класса Person. Затем приложение просит Вас ввести одну из следующих команд. ‘-f’ – сортировка по имени, ‘-s’ – сортировка по фамилии, ‘-a’ – сортировка по возрасту. В зависимости от введенной команды должен вывестись список пользователей отсортированных по имени, фамилии или возрасту. Если пользователь вводит “–stop”, то приложение должно завершаться.

Не забываете закрывать потоки и освобождать другие ресурсы, если Вы их задействовали. Желательно, чтобы работало и для русских символов.

Возможно для решения Вам понадобятся следующие статьи:

 

Файл с пользователями.

Должен получиться примерно такой вывод на консоль

Рекомендую использовать следующие классы.

Все.

Если Вы решили это задание, то посмотрите в сторону моего курса Трепещущий Падаван. Возможно он прекрасно Вам подойдет.

14 Комментарии “JC: Чтение из файла, сортировка и вывод в консоль

    1. 1) Если бы в моем проекте ты написал нечто подобное, то я руки бы обломал и уволил.
      Недочеты :
      a. Нет лишней писанины и прочей шняги
      b. Некорректно освобождаешь ресурсы.
      с. Глубже не вчитывался.
      2) За то, что хоть как-то справился молодец. Но до junior разработчика походу еще далеко.
      3) Правильность логики приложения не проверял.

      1. Ну это ерунда по большему счету исправляется моментально. Если все работает правильно, то нормально (я не запускал). Если написано правильно и разобраться просто (не автору кода), то это код хороший. А у него все структурировано. Конечно если он еще бы корректно закрывал потоки используя try-with-resources.

        Можно конечно его получше причесать, но все равно лучше чем тут http://it-channel.ru/2016/02/05/jc-from-file-sort-to-console-app/#comment-212

  1. package com.javarush.test.TEST.YouTubeTest;

    import java.io.*;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;

    public class SortList
    {
    public static List persons = new ArrayList();

    public static List readFile(String fileName){
    List list = new ArrayList();
    try(BufferedReader reader = new BufferedReader(new FileReader(fileName));
    ){
    String buffer = “”;
    while ((buffer = reader.readLine()) != null){
    String[] personFields = buffer.split(” “);
    String firstName = personFields[0];
    String secondName = personFields[1];
    int age = Integer.parseInt(personFields[2]);
    list.add(new Person(firstName, secondName, age));
    }
    }catch (FileNotFoundException e){
    System.out.println(“File not found”);
    }catch (IOException e1){
    System.out.println(“Something wrong”);
    }
    return list;
    }

    public static void main(String[] args)
    {
    try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    ){
    System.out.println(“Enter path please”);
    String fileName = reader.readLine();
    System.out.println(“Person loading…”);
    persons = readFile(fileName);
    System.out.println(“Persons were loaded.”);
    System.out.println(“App was started. Enter ‘–stop’ to exit.\n” +
    “Enter one of these commands ‘-f’ ‘-s’ ‘-a’…”);
    String query = reader.readLine();
    while (true)
    {
    if (query.equals(“–stop”)){
    System.out.println(“App was stopped”);
    System.exit(0);
    }
    if (query.equals(“-f”)){
    Comparator firstNameComparator = new FirstNameComparator();
    Collections.sort(persons, firstNameComparator);
    }else if (query.equals(“-s”)){
    Comparator secondNameComparator = new SecondNameComparator();
    Collections.sort(persons, secondNameComparator);
    }else if (query.equals(“-a”)){
    Comparator ageComparator = new AgeComparator();
    Collections.sort(persons, ageComparator);
    }
    for (Person p: persons) {
    System.out.println(p);
    }
    query = reader.readLine();
    }

    }catch (FileNotFoundException e){
    System.out.println(“File not found”);
    }catch (IOException e1){
    System.out.println(“Something wrong”);
    }

    }
    }

  2. кодировку все смело проигнорировали, хотя было сказано в видео и указано в тексте задачи)
    Учитесь читать ТЗ внимательно.

  3. При считывании из файла с помощью Scanner в поле firstName объекта Person попадает первое слово в строке. Почему у самого первого считанного Personа firstName начинается с пробела?

Добавить комментарий

Ваш e-mail не будет опубликован.

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">