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

Сортировка массива сотрудников хранящего в себе: имя, фамилию, должность, зп

31.03.2018, 13:33. Показов 4169. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Надо отсортировать массив сотрудников по убыванию заработной платы
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public Employee[] employeesSortedBySalary() {
 
        for (int i = employees.length - 1; i > 0; i--) {
            for (int j = 0; j < i; j++) {
                if (employees[j].getSalary() > employees[j + 1].getSalary()) {
                    Employee tmp = employees[j];
                    employees[j] = employees[j + 1];
                    employees[j + 1] = tmp;
 
                }
            }
        }
            return employees;
    }
я пытался сделать сортировку пузырьком, но выходит ошибка java.lang.NullPointerException
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2018, 13:33
Ответы с готовыми решениями:

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

Сортировка на Имя и Фамилию
Помогите пожалуйста решить задание. Решил слишком длинно её, не подошло. Напишите функцию Splite(name: string; var first, last : string),...

Дан список сотрудников: фамилия, должность, оклад
Помогите решить. Дан список сотрудников: фамилия, должность, оклад. Программа должна поддерживать следующие функции: • начальное...

8
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
31.03.2018, 16:32
Pawok97, В классе Employee реализуешь интерфейс Comparable, переопределяешь метод compareTo(), в нем организуешь сравнение объектов по з/п. А потом просто Arrays.sort().
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
31.03.2018, 16:35
Pawok97, значит у Вас не заполнен (или заполнен не полностью) массив значений, проверяйте. Сам метод работает и ошибок не выбрасывает.
Кликните здесь для просмотра всего текста
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
    static Employee[] employees;
 
    static public Employee[] employeesSortedBySalary() {
        for (int i = employees.length - 1; i > 0; i--) {
            for (int j = 0; j < i; j++) {
                if (employees[j].getSalary() > employees[j + 1].getSalary()) {
                    Employee tmp = employees[j];
                    employees[j] = employees[j + 1];
                    employees[j + 1] = tmp;
                }
            }
        }
        return employees;
    }
 
    static class Employee {
        int salary;
 
        public Employee(int salary) {
            this.salary = salary;
        }
 
        public int getSalary() {
            return salary;
        }
 
        @Override
        public String toString() {
            return "Employee salary = " + salary;
        }
    }
 
    public static void main(String[] args) {
        employees = new Employee[5];
        employees[0] = new Employee(110000);
        employees[1] = new Employee(11000);
        employees[2] = new Employee(5000);
        employees[3] = new Employee(25000);
        employees[4] = new Employee(7000);
 
        for (Employee temp : employees) {
            System.out.println(temp.toString());
        }
        System.out.println("=========================");
        employeesSortedBySalary();
 
        for (Employee temp : employees) {
            System.out.println(temp.toString());
        }
    }
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
31.03.2018, 17:03
А не легче сортировать Comparator?

Метод
Java
1
2
3
public void sortBySalary(Employee[] array) {
    Arrays.sort(array, Comparator.comparingInt(Employee::getSalary()));
}
типа такого.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
31.03.2018, 17:11
ArtemFM, тут он по возрастанию сортировать будет. Не?
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
31.03.2018, 17:24
Ок, не увидел

Java
1
2
3
public void sortBySalary(Employee[] array) {
        Arrays.sort(this.base, Comparator.comparingInt(Employee::getSalary).reversed());
    }
0
0 / 0 / 0
Регистрация: 01.10.2016
Сообщений: 33
31.03.2018, 21:12  [ТС]
Просто по заданию метод должен быть возвращающим и интерфейсы использовать нельзя. Но если вам не сложно, могли бы вы показать как реализовать это с comparable и переопределение. Заранее спасибо
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
31.03.2018, 21:17
Pawok97, да не сложно. Вот например, я там набросал, организована сортировка у людей по размеру одежды
Как раз, примерчик простенький, для понятия.
1
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
01.04.2018, 04:23
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
import java.util.Arrays;
 
public class Task017 {
    private static final int DEFAULT_LENGTH = 9;
    private static final String START_NAME = "Human";
    private static final int MIN_SALARY = 30_000;
    private static final int MAX_SALARY = 100_000;
 
    public static void main(String[] args) {
        Employee[] base = fillRandomEmployees(DEFAULT_LENGTH, START_NAME, MIN_SALARY, MAX_SALARY);
        //печатаем рандомный массив
        System.out.println("LIST EMPLOYEES:");
        printEmployees(base);
 
        //сортируем и печатаем
        System.out.println("\nSORT EMPLOYEES:");
        Arrays.sort(base);
        printEmployees(base);
    }
 
    public static Employee[] fillRandomEmployees(int length, String name, int minSalary, int maxSalary) {
        Employee[] base = length > 0 ? new Employee[length] : new Employee[0];
        for (int index = 0; index < length; index++) {
            int id = index + 1;
            base[index] = new Employee(id, String.format("%s%d", name, id), getRandomSalary(minSalary, maxSalary));
        }
        return base;
    }
 
    public static float getRandomSalary(int min, int max) {
        return (float) Math.random() * (max - min) + min;
    }
 
    public static void printEmployees(Employee[] base) {
        if (base != null) {
            for (Employee employee : base) {
                System.out.println(employee);
            }
        }
    }
}
 
class Employee implements Comparable<Employee> {
    private int id;
    private String name;
    private float salary;
 
    public Employee(int id, String name, float salary) {
        this.id = id;
        this.name = name;
        this.salary = salary;
    }
 
    @Override
    public String toString() {
        return String.format("ID: %d; Name: %s; Salary: %.2f;", this.id, this.name, this.salary);
    }
 
    @Override
    public int compareTo(Employee o) {
        return o != null ? new Float(this.salary).compareTo(o.salary) : 0;
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2018, 04:23
Помогаю со студенческими работами здесь

Запросить фамилию, имя и отчество пользователя, и вывести его фамилию и инициалы
Вот задание:Написать программу, которая запрашивает фамилию, имя и отчество, а выводит фамилию и инициалы!!!

Запросить у пользователя Фамилию Имя Отчество и выдать в сокращенном виде Фамилию И.О.
Visual basic Запросить у пользователя Фамилию Имя Отчество через пробел в одну строку(в Textbox) и выдать в сокращенном виде Фамилию И. О.

В одной строке ввести фамилию, имя, отчество. Вывести на экран фамилию и инициалы
В одной строке ввести фамилию, имя, отчество. Вывести на экран фамилию и инициалы. Пояснения: * С помощью функции Copy() выведите...

Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы
Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы. _______ Как это задание...

Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы
Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru