Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 26.12.2021
Сообщений: 7

Сериализация и десериализация после запроса данных от пользователя

02.01.2022, 10:13. Показов 906. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Всех С Новым Годом и все такое!)
Помогите решить задачу. Начал изучать java по видеокурсам и никак не могу разобраться с сериализацией и десериализацией.
Само задание:
-Создайте программу, что будет запрашивать у пользователя данные: имя, логин, возраст и список его хобби. Все эти значения получайте через класс Scanner. Список хобби выводится каждый раз с новой строки.
-После ввода всех данных выполните сериализацию. Позже пропишите код для выполнения десиреализации. Объект, что будет получен при десериализации должен быть выведен с использованием переопределенния метода toString().

Саму программу создал, и она вроде как работает. Не могу разобраться с десериализацией. Для чего создается второй класс, в котором производят "вытаскивания" файлов из документа, который до этого создал посредством сериализации. Что должно получиться в итоге и что должно вывести в конце?
Ниже то что у меня получилось:

класс Main.java

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Scanner;
 
public class Main {
        public static void main(String[] args) {
        Scanner sс = new Scanner(System.in);
        System.out.print("Введите имя: ");
        String name = sс.nextLine();
        System.out.print("Введите логин: ");
        String login = sс.nextLine();
        System.out.print("Введите возраст: ");
        int age = sс.nextInt();
        sс.nextLine();
        System.out.print("Введите хобби через запятую: ");
        String[] hobby = sс.nextLine().split(",");
        System.out.println("Пользователь: " + name + " c логином: " + login + ". Его возраст: " + age + ". Все " +
                "хобби: ");
        for (int i = 0; i < hobby.length; i++) {
            System.out.println(hobby[i]);
 
            try {
                FileOutputStream fos = new FileOutputStream("main.file");
                ObjectOutputStream oos = new ObjectOutputStream(fos);
 
                oos.writeObject(name);
                oos.writeObject(login);
                oos.writeObject(age);
                oos.writeObject(hobby);
 
                oos.close();
 
            } catch (IOException e) {
                e.printStackTrace();
 
//                System.out.println(User);
 
            }
        }
    }
}
класс User.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.io.ObjectInputStream;
 
import java.util.List;
 
public class User {
    public static void user(String[] args) {
 
        try {
            FileInputStream fis = new FileInputStream("main.file");
            ObjectInputStream ois = new ObjectInputStream(fis);
 
 
 
            ois.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
 
    }
        private String name;
        private String login;
        private byte age;
        private List<String> hobby;
 
    public User(String name, String login, byte age, List<String > hobby){
            this.name = name;
            this.login = login;
            this.age = age;
            this.hobby = hobby;
 
        }
        public String toString () {
            return name + login + age + hobby;
 
 
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.01.2022, 10:13
Ответы с готовыми решениями:

Сериализация и десериализация пользовательских данных
Подскажите пожалуйста,как сделать сериализация и десериализация пользовательских данных с классом Scanner.

Пользовательская сериализация/десериализация большого объема данных
Добрейшего времени суток, коллеги! Разрабатываю узко-специализированное ПО. Для сохранения файла с данными использую пользовательскую...

Gson. Сериализация/десериализация с сохранением типов данных
Добрый вечер Использую GSon. При десеариализации данных из JSON структура класса к которому приводить данные заранее неизвестна....

1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.01.2022, 12:04
Какой-то лютый бардак написан.
Ах, ну вот жеж, все ясно -
Цитата Сообщение от Asminozhka Посмотреть сообщение
изучать java по видеокурсам
Добавлено через 34 минуты
На, простейший пример
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package ru.ismokejc;
 
import java.io.*;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
 
public class Main {
 
    public static void main(String[] args) {
        new Main().menu();
    }
 
    public void menu() {
        Scanner sc = new Scanner(System.in);
        User u = null;
        while (true) {
            System.out.println("What you want?");
            System.out.println("1. Create user");
            System.out.println("2. Save user");
            System.out.println("3. Load user");
            System.out.println("... Exit");
            int v = Integer.parseInt(sc.nextLine());
            switch (v) {
                case 1:
                    u = createUser(sc);
                    System.out.println(u);
                    break;
                case 2:
                    saveUser(u);
                    break;
                case 3:
                    u = loadUser();
                    System.out.println(u);
                    break;
                default:
                    return;
            }
        }
    }
 
    private User createUser(Scanner sc) {
        System.out.print("Введите имя: ");
        String name = sc.nextLine();
        System.out.print("Введите логин: ");
        String login = sc.nextLine();
        System.out.print("Введите возраст: ");
        int age = Integer.parseInt(sc.nextLine());
        System.out.print("Введите хобби через запятую: ");
        List<String> hobbies = Arrays.asList(sc.nextLine().split(","));
        System.out.println("User created.");
        return new User(name, login, age, hobbies);
    }
 
    private User loadUser() {
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("main.file"))) {
            System.out.println("User loaded.");
            return (User) ois.readObject();
        } catch (IOException | ClassNotFoundException ex) {
            ex.printStackTrace();
        }
        return null;
    }
 
    private void saveUser(User u) {
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("main.file"))) {
            oos.writeObject(u);
            System.out.println("User saved.");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}
 
class User implements Serializable {
    private String name;
    private String login;
    private int age;
    private List<String> hobbies;
 
    public User(String name, String login, int age, List<String> hobbies) {
        this.name = name;
        this.login = login;
        this.age = age;
        this.hobbies = hobbies;
    }
 
    @Override
    public String toString() {
        StringBuilder res = new StringBuilder(String.format("Name: %s, Login: %s, Age: %d\nHobbies: ", name, login, age));
        res.append(hobbies.stream().collect(Collectors.joining(", ")));
        return res.toString();
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.01.2022, 12:04
Помогаю со студенческими работами здесь

Сериализация данных профиля пользователя
Здравствуйте, подскажите пожалуйста Есть БД, в одной из табличек хранится данные профиля пользователя в виде: ...

Сериализация/десериализация
Добрый день! Прошу помочь с сериализацией, нашла туториал, все сделала, как там написано, выдается куча ошибок. Выкладываю проект с...

Сериализация и десериализация
Доброго вечера. Возникло странное непонимание принципов сериализации. Дело в том, что я не встречал достаточно подробных материалов по...

Сериализация и Десериализация
Здравствуйте столкнулся с проблемой Сериализация и Десериализация в моем проекте все прекрасно работало на Json было сделано так что...

Сериализация и Десериализация
Здравствуйте столкнулся с проблемой Сериализация и Десериализация в моем проекте все прекрасно работало на Json было сделано так что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru