Условие:
В классе Solution есть список сотрудников waitingEmployees, которые ждут зарплату, и список сотрудников alreadyGotSalaryEmployees, которые её уже получили. Необходимо реализовать метод paySalary(String), который в качестве аргумента принимает имя сотрудника, желающего получить зарплату.
Метод должен проверить наличие сотрудника в списке waitingEmployees, и если он не получал зарплату, выдать её:
Если параметр метода paySalary(String) равняется null, ничего не нужно делать.
Добавить имя сотрудника в список alreadyGotSalaryEmployees.
В списке waitingEmployees заменить имя сотрудника на null.
Требования:
• Метод paySalary(String) должен добавлять в список alreadyGotSalaryEmployees имя сотрудника, если он есть в списке waitingEmployees.
• Метод paySalary(String) должен заменять имя сотрудника на значение null, если он есть в списке waitingEmployees.
• Метод paySalary(String) не должен изменять списки waitingEmployees и alreadyGotSalaryEmployees, если переданного имени нет в списке waitingEmployees.
• Если в метод paySalary(String) передается null, метод не должен добавлять это значение в waitingEmployees или alreadyGotSalaryEmployees.
Решение
package com.javarush.task.pro.task12.task1209;
import java.util.ArrayList;
import java.util.Collection;
/*
Бухгалтерия
*/
public class Solution {
public static ArrayList<String> waitingEmployees = new ArrayList<>();
public static ArrayList<String> alreadyGotSalaryEmployees = new ArrayList<>();
public static void initEmployees() {
waitingEmployees.add("Гвинно");
waitingEmployees.add("Гунигерд");
waitingEmployees.add("Боргелейф");
waitingEmployees.add("Нифрод");
waitingEmployees.add("Альбиуф");
waitingEmployees.add("Иногрим");
waitingEmployees.add("Фриле");
}
public static void main(String[] args) {
initEmployees();
paySalary("Гунигерд");
paySalary("Гринго");
paySalary("Гунигерд");
paySalary("Фриле");
System.out.println(waitingEmployees);
System.out.println(alreadyGotSalaryEmployees.contains("Гвинно"));
System.out.println(alreadyGotSalaryEmployees);
}
public static void paySalary(String name) {
boolean cont = alreadyGotSalaryEmployees.contains(name);
boolean wait = waitingEmployees.contains(name);
int s = -1;
if (name != null && cont == false && wait == true) {
alreadyGotSalaryEmployees.add(name);
for (int i = 0; i < waitingEmployees.size(); i++) {
if (waitingEmployees.get(i) != null){
if (waitingEmployees.get(i).equals(name)) {
s = i;
break;
}
}
}
if (s >= 0){
waitingEmployees.set(s, null);
}
}
}
}
Антон Антошин
16 уровень
Подскажите, решение выдалось слишком большим, как его можно было упростить?
Решен
Комментарии (15)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
LARA
21 октября 2021, 07:02
if(name == null){
return;
}
for(String s : waitingEmployees){
if(s.equals(name)){
alreadyGotSalaryEmployees.add(s);
waitingEmployees.set(waitingEmployees.indexOf(s),null);
}
}
+1
Igor G
9 мая 2021, 09:56
Я так решил
+2
IL
21 апреля 2021, 17:56
Второе условие:
ListIterator<String> iterator = waitingEmployees.listIterator();
while (iterator.hasNext()) {
String next = iterator.next();
if (next.equals(name)) {
iterator.set(null);
}
+2
Алексей Веденистов
2 апреля 2021, 19:27
for (int i = 0; i < waitingEmployees.size(); i++) {
if (waitingEmployees.contains(name)) {
alreadyGotSalaryEmployees.add(name);
waitingEmployees.set(waitingEmployees.indexOf(name), null);
} else {
return;
}
0
Dmitrii Slabozhanin Frontend Developer
23 марта 2021, 03:58
У меня тоже получился замудренный способ, хотя и не очень длинный )
public static void paySalary(String name) {
//напишите тут ваш код
if(waitingEmployees.contains(name)) {
alreadyGotSalaryEmployees.add(name);
waitingEmployees.set(waitingEmployees.indexOf(name), null);
}
else if(waitingEmployees.equals(null))
return;
else {
waitingEmployees.equals(null);
{
}
return;
+2
Fyodor Gannutin
20 января 2021, 17:25
Еще отличная тема - это решить задачу своим способом, а потом в помощи посмотреть и проанализировать решение
0
Антон Антошин
21 января 2021, 06:20
чужих решений нихт по этой задаче вроде, я тож хотел глянуть как ее решили другие
0
Ksenia Volkova Java Developer в DXC Master
21 января 2021, 06:44
В "правильных решениях" бывают далеко не лучшие варианты.
0
Ksenia Volkova Java Developer в DXC Master
20 января 2021, 07:09
Это
if (name != null && cont == false && wait == true)
лучше записать как
if (name != null && !cont && wait)
Для замены на null не обязательно делать перебор циклом, можно, например, использовать indexOf.
+1
Антон Антошин
20 января 2021, 07:29
Благодарю!
0
Антон Антошин
20 января 2021, 07:32
Если не затруднит, можете пожалуйста прислать код, как это реализовать без цикла О_о
Для замены на null не обязательно делать перебор циклом, можно, например, использовать indexOf.
0
Ksenia Volkova Java Developer в DXC Master
20 января 2021, 07:39решение
+9
Антон Антошин
20 января 2021, 07:51
Благодарю! эт очень круто
0
YPon
16 октября 2021, 09:20
А проверка на null?
0
Ksenia Volkova Java Developer в DXC Master
16 октября 2021, 10:33
Проверка чего?
0