0 / 0 / 0
Регистрация: 28.12.2017
Сообщений: 22
1

Структура: Напечатать ФИО и адрес сотрудников, которые на сегодняшний день проработали в фирме не менее трех лет.

13.01.2018, 09:45. Показов 3437. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задачка проста, но сложности у меня все же возникли.

Известна информация о 20 сотрудниках фирмы: фамилия, имя, отчество,
адрес и дата поступления на работу (месяц, год). Напечатать фамилию, имя, отчество и адрес сотрудников, которые на сегодняшний день проработали в фирме не менее трех лет. День месяца не учитывать (при совпадении месяца поступления и месяца сегодняшнего дня считать, что прошел полный год).

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 static class Employee extends ArrayList {
 
        private String name;
        private String patronymic;
        private String surname;
        private String address;
        private int year;
        private int month;
 
        public Employee(String name, String surname, String patronymic, String address, int year, int month) {
            this(name, surname, patronymic);
 
 
// переменные и конструкторы
к каждой переменной созданы геттеры и сеттеры типа:

Java
1
2
3
4
5
6
7
public String getName() {
            return name;
        }
 
        public void setName(String name) {
            this.name = name;
        }
Вот здесь не понимаю как надо поступить. Необходимо заполнить массив, делается это через .add т.е. staff.add, но т.к. массив привэйт видимо нужно через set. При применении set массив не заполняется т.к. наверна нет .add, зато при применении get, размер массива увеличивается, но считываю с него пустые значения.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static class Database {
        private List<Employee> staff = new ArrayList<>();
 
        public List<Employee> getStaff() {
            return staff;
        }
 
        public void setStaff(List<Employee> staff) {
            this.staff = staff;
        }
        public  void newStaff () {
 
        setStaff  (new Employee("Антон", "Иванов", "Юсуфович", "Москва", 1959, 11));
            getStaff().add (1,new Employee("Альберт", "Иванов", "Омск", 1963, 7));
}
    }
Подскажите уважаемые знатоки, как правильно массив заполнить).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2018, 09:45
Ответы с готовыми решениями:

Использование структур. Напечатать сотрудников которые на сегодняшний день проработали в фирме не менее трех лет
Известна информация о 20 сотрудниках фирмы: фамилия, имя, отчество, адрес, и дата поступления на...

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

Напечатать информацию о сотрудниках, которые проработали не менее 3-х лет
Известна информация о 20 сотрудниках фирмы: фамилия, имя, отчество, адрес, месяц и год поступления...

Напечатать данные тех работников, кто на сегодняшний день проработал уже не менее 5 лет
Помогите решить, прошу отнестись с уважением Дан массив данных о работающих в фирме: фамилия,...

4
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
17516 / 10278 / 2813
Регистрация: 21.10.2017
Сообщений: 22,337
13.01.2018, 10:46 2
В классе Database метод, например
Java
1
2
3
private void addEmpl (Employee empl){
      staff.add(empl);
}
Добавлено через 1 минуту
Цитата Сообщение от digital-dd Посмотреть сообщение
getStaff().add


Добавлено через 3 минуты
Ну и далее по коду
Java
1
2
3
Database db = new Database;
....
db.addEmpl(new Employee(...
1
0 / 0 / 0
Регистрация: 28.12.2017
Сообщений: 22
13.01.2018, 11:05  [ТС] 3
Если я правильно понимаю этот метод добавляет записи Employee в массив. Проверил, размер увеличился, но выводит также пустую позицию. Вывожу так String str = Arrays.toString(db.staff.toArray()); результат []
через цикл тоже самое
0
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
17516 / 10278 / 2813
Регистрация: 21.10.2017
Сообщений: 22,337
13.01.2018, 13:14 4
А зачем ты класс Employee наследуешь от ArrayList?

Добавлено через 7 минут
У тебя в db в переменной staff получается список ОБЪЕКТОВ. И у каждого есть свои поля. Чтоб корректно выводить все это хозяйство на экран, тебе в классе Employee нужно переопределить метод toString() и использовать для вывода
System.out.println(db.getStaff().get(какое-то-там).toString);
Как-то так... Просто изначально архитектура приложения корявенькая

Добавлено через 54 минуты
digital-dd, вот простенький скелет
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.ArrayList;
 
public class Main {
 
    public static void main(String[] args) {
        Database db1 = new Database();
        db1.addEmployee(new Employee("Альберт", "Иванов", "Петрович", "Омск", 1963, 7));
        db1.addEmployee(new Employee("Сидор", "Сидоров", "Сидорович", "Урюпинск", 1979, 9));
        db1.addEmployee(new Employee("Антон", "Иванов", "Юсуфович", "Москва", 1959, 11));
 
        ArrayList<Employee> myLocalDatabase = db1.getDb();
 
        for (Employee aMyDatabase : myLocalDatabase) {
            System.out.println(aMyDatabase.toString());
        }
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.ArrayList;
 
public class Database {
    private ArrayList<Employee> db;
 
    Database() {
        db = new ArrayList<>();
    }
 
    public void addEmployee(Employee empl){
        db.add(empl);
    }
 
    public ArrayList<Employee> getDb() {
        return db;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Employee {
    private String name;
    private String patronymic;
    private String surname;
    private String address;
    private int year;
    private int month;
 
    Employee(String name, String patronymic, String surname, String address, int year, int month) {
        this.name = name;
        this.patronymic = patronymic;
        this.surname = surname;
        this.address = address;
        this.year = year;
        this.month = month;
    }
 
    public String toString() {
        return String.format("Имя: %s, Фамилия: %s, Отчество: %s\nГород: %s, Год: %d, Месяц: %d\n---------------------------",
                name, patronymic, surname, address, year, month);
    }
}
2
0 / 0 / 0
Регистрация: 28.12.2017
Сообщений: 22
17.01.2018, 07:32  [ТС] 5
iSmokeJC большое спасибо) с вашей помощью с задачкой разобрался
0
17.01.2018, 07:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2018, 07:32
Помогаю со студенческими работами здесь

Посчитать количество проработавших на сегодняшний день не менее 3 лет
Дан массив данных о работающих в фирме: фамилия, имя, отчество, адрес (улица, дом, квартира) и дата...

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

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

Во второй файл записать данные только тех из них, кто на сегодняшний день проработал не менее 5 лет
Помогите,пожалуйста,последняя задача по файлам! Дан текстовый файл, в котором хранятся данные о...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru