Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 0
Регистрация: 09.01.2015
Сообщений: 15

Работа с датой. Как получить список студентов, родившихся после заданного года?

17.09.2015, 17:47. Показов 2316. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем.
Нужна помощь. В классе Univercity есть метод, печатающий список студентов, родившихся после заданного года. Но в моем случае я не знаю, как правильно передать ему параметр типа Date, и он не работает. Подскажите пожалуйста, что нужно сделать.
Спасибо)

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
public class Student {
    private long id;
    private String name;
    private String secondName;
    private String fatherName;
    private Date birthDate;
    private String address;
    private String phone;
    private String faculty;
    private int course;
    private String group;
 
    public Student(long id, String name, String secondName, String fatherName, int year, int month, int day,
                   String address, String phone, String faculty, int course, String group){
        this.id = id;
        this.name = name;
        this.secondName = secondName;
        this.fatherName = fatherName;
        GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
        this.birthDate = calendar.getTime();
        this.address = address;
        this.phone = phone;
        this.faculty = faculty;
        this.course = course;
        this.group = group;
    }
 
    // getters and setters here
 
    @Override
    public String toString() {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd");
        return "Student{" +
                "id: " + id +
                ", name: '" + name + '\'' +
                ", secondName: '" + secondName + '\'' +
                ", fatherName: '" + fatherName + '\'' +
                ", birthDate: " + dateFormat.format(birthDate) +        // в консоль: birthDate: 1991.06.04
                ", address: '" + address + '\'' +
                ", phone: '" + phone + '\'' +
                ", faculty: '" + faculty + '\'' +
                ", course: '" + course + '\'' +
                ", group: '" + group + '\'' +
                '}';
    }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Univercity {
    private String name;
    private String city;
    private  List<Student> students = new ArrayList<Student>();
 
    public Univercity(String name, String city){
        this.name = name;
        this.city = city;
    }
 
    // getters and setters here
 
    public void addStudent(Student student){
        students.add(student);
    }
    public void printStudentsBirthdateAfterDate(Date date){
        for (Student std: students) {
            if(std.getBirthDate().after(date)){
                System.out.println(std.toString());
            }
        }
    }
}
метод main:

Java
1
2
3
4
5
6
Univercity univercity = new Univercity("Karazin", "Kharkov");
        univercity.addStudent(new Student(123456780, "Ivan", "Mironov", "Nikolaevich", 1993, 06, 04,
                "57091, Kharkov, Sumskaya str, 6/14", "(057) 222-33-44", "Computer Science", 3, "0102b"));
 
System.out.println("Print students with birth date after 1993.02.02");
        univercity.printStudentsBirthdateAfterDate(new Date(1993 - 02 - 02));   // не работает
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.09.2015, 17:47
Ответы с готовыми решениями:

Напишите программу, которая вводит и печатает эту информацию и печатает фамилии студентов, родившихся после 1970 года
Задание: Запись имеет четыре поля, содержащие фамилию и дату рождения (число, месяц, год) студента. Напишите программу, которая вводит и...

Определить число людей, родившихся до 1985 года, и число людей, родившихся после 1990 года
1)Известен год рождения-каждого человека из группы. Определить число людей, родившихся до 1985 года, и число людей, родившихся после 1990...

Файлы записей, напечатать список студентов заданного года рождения
Дан список студентов в катором указани фамилия и год рождения. Отпечатать список студентов заданого года рождения. Program Fz_2; ...

4
 Аватар для Serg22
107 / 107 / 58
Регистрация: 04.03.2013
Сообщений: 479
17.09.2015, 21:10
mosdenvik, Date нужно использовать по условию задачи? лучше юзай календарь
Java
1
2
    Calendar calendar = Calendar.getInstance();
        calendar.set(day,month,year);
0
1 / 1 / 0
Регистрация: 09.01.2015
Сообщений: 15
18.09.2015, 12:20  [ТС]
Serg22, все равно не пойму, как его использовать в конструкторе Student, а потом в методе. Как сравнивать даты? У класса Date есть метод boolean after(). Я пробовал создать свой класс BirthDate extends Date, но, чувствую, так не надо делать)
Если бы нужно было просто вводить дату и красиво ее печатать, то мое решение вполне сгодилось бы. Как теперь сделать, чтоб в методе работало условие - student.getBirthDate().after(date)
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.09.2015, 13:09
birthDate.getTime() вернет время рождения в миллисекундах

Java
1
2
3
4
5
6
7
8
public void printStudentsBirthdateAfterDate(Date date){
        long after = date.getTime();
        for (Student std: students) {
            if(std.getBirthDate() > after){
                System.out.println(std.toString());
            }
        }
    }
1
1 / 1 / 0
Регистрация: 09.01.2015
Сообщений: 15
21.09.2015, 15:54  [ТС]
Может окажется кому-то полезно. Решил задачу так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public void printStudentsBirthdateAfterDate(int year, int month, int day){
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, month);
        cal.set(Calendar.DAY_OF_MONTH, day);
        Date date = cal.getTime();
        long after = date.getTime();
        for (Student std: students) {
            if(std.getBirthDate().getTime() > after){
                System.out.println(std.toString());
            }
        }
    }
Паблито, спасибо за подсказку
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.09.2015, 15:54
Помогаю со студенческими работами здесь

Составить список студентов (мужского пола) заданного года рождения
Задан список группы студентов ( фамилия, год рождения, пол). Составить список студентов( мужского пола ) заданного года рождения. Помогите!...

Определить число людей родившихся до 1985 года, и число людей родившихся после 1990
Определить число людей родившихся до 1985 года, и число людей родившихся после 1990 в паскале помогите!!! program z4; uses crt; var...

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

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

Получить список работников, которые уйдут в отпуск к 20 апреля заданного года
1) В компьютерной базе данных хранится информация об работниках мясокомбината следующей структуры: имя, фамилия, пол, год рождения, адрес...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru