Бухгалтерия

  • 13
  • Недоступна
В классе Solution есть список сотрудников waitingEmployees, которые ждут зарплату, и список сотрудников alreadyGotSalaryEmployees, которые её уже получили. Необходимо реализовать метод paySalary(String), который в качестве аргумента принимает имя сотрудника, желающего получить зарплату. Метод должен
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (39)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
joke_jo Инженер-конструктор 2к.
6 октября, 06:58
// i - позиция в списке, перебирается циклом for
// начало итерации
if (waitingEmployees.contains(name)
    && !alreadyGotSalaryEmployees.contains(name))
{
        alreadyGotSalaryEmployees.add(waitingEmployees.get(i));
        waitingEmployees.set(i, null);
}
// конец итерации
Через один if как-то красивее выглядит, что ли. Без всяких брейков. И как правильно заметили, нужно заменить НЕуникальное имя на уникальный идентификатор (ИНН, к примеру), тогда не будет ситуации когда из двух Пуп зарплату получит только первый Пупа.
Arnold Shrotman
Уровень 14, Hillwood, Russian Federation
28 сентября, 10:19
Если в if не засунуть waitingEmployees.get(i) проверку на null, то:
waitingEmployees.forEach(s -> paySalary(s));
не отработает
Igor Petrashevsky
Уровень 17
15 сентября, 04:46
"Если в метод paySalary(String) передается null, метод не должен добавлять это значение в waitingEmployees или alreadyGotSalaryEmployees." у меня стоит первой строкой
if (name.equals(null)) return;
и вадидатор - задачу по этому пункту не пускает, а должен, по идее. У вас в "правильном" решении проверки имени на null нет, ничего не мешает ему попасть в список и получить ЗП.
Сергей Мухин
Уровень 16, Павлодар, Казахстан
17 сентября, 08:31
name.equals(null)
А разве можно в equals передавать null?🤔
Igor Petrashevsky
Уровень 17
19 сентября, 01:20
компилятор пустил, значит можно, по идее, это как "" , стринг длинной 0
Александр
Уровень 19, Москва, Russian Federation
21 сентября, 08:24
if (name == null) return;
На null вот так проверяется. Расшифровка: name указывает на пустоту. Метод equals сравнивает содержимое объектов. С одной стороны у нас объект типа String - с другой "пустота".
Igor Petrashevsky
Уровень 17
21 сентября, 17:45
наверное, вы правы. Но , все же, интересно знать матчасть, как оно хранится в памяти JVM. null в данном случае может быть указатель, или стринг, который наверняка в UTF16z , т.е. просто \0 в конце и тело нулевой длины. При сравнении вида == , мы скорей всего сравниваем указатели, а не содержимое. А equals подразумевает содержимое.
Сергей
Уровень 28, Кандалакша, Россия
27 сентября, 07:56
Здесь скорее всего получилось сравнение на пустую строку, а ожидается сравнение на пустую ссылку...
Igor Petrashevsky
Уровень 17
28 сентября, 07:49
Пустая строка - "" в памяти она как \0 , т.к. принцип asciiz . Минимум 1 байт или символ все равно выделен.. Дальше надо рыть JVM, видимо, может сама JVM что-то оптимизирует, например в буфере строк имеет строку '\0' и тогда указатель не будет null, т.к. будет указывать на строку \0
Maxim Semenov
Уровень 30, Москва, Russian Federation
29 сентября, 19:11
нет. null - это ссылка.
Myzery
Уровень 16, Санкт-Петербург, Россия
6 сентября, 17:24
Подскажите, можно ли выполнить эту задачу через replace или replaceAll? У меня не вышло.
Maxim Semenov
Уровень 30, Москва, Russian Federation
29 сентября, 19:18
replace не существует вродь. А replaseAll меняет все элементы
listenuptome Backend Developer
30 августа, 11:37
"Правильное решение" совсем не правильное. Достаточно сделать в списке 2 одинаковых имени и з\п получит только 1 сотрудник.
joke_jo Инженер-конструктор 2к.
6 октября, 06:54
Правильно, проверка должна быть по ИНН а не по имени сотрудника.
Denis Malyshev
Уровень 17, Петрозаводск, Россия
26 августа, 14:19
Вроде легко, но полчаса потрачено.
Contemplation
Уровень 10, Якутск, Russian Federation
17 августа, 05:13
проверил в идее, код из верного решения не работает
Sulf8
Уровень 27, Самара, Россия
8 августа, 13:39
решил без цикла в 3 строчки. "Каракатица" как в правильном решении не понравилась.
Sergey Kornilov
Уровень 17, Petropavlovsk, Казахстан
6 июля, 15:21
Хорошая задачка. Всего эту задачу решили 2089 учеников.
Andrey_java_dev
Уровень 16, Санкт-Петербург
6 июля, 08:44
Полезный indexOf пригодился