switch (args[0]) {
case "-u": {
int id = Integer.parseInt(args[1]);
String name = "";
for (int i = 2; i < args.length - 2; i++) {
name += args[i] + " ";
}
if (name.length() > 30) name = name.substring(0, 30);
String price = args[args.length - 2];
if (price.length() > 8) price = price.substring(0, 8);
String quantity = args[args.length - 1];
if (quantity.length() > 4) quantity = quantity.substring(0, 4);
Product productUpdate = null;
for (Product p : productList) {
if (p.id == id) {
productUpdate = p;
}
}
if (productUpdate != null) {
productUpdate.name = name;
productUpdate.price = price;
productUpdate.quantity = quantity;
}
break;
}
case "-d": {
int id = Integer.parseInt(args[1]);
Product delProduct = null;
for (Product p : productList) {
if (p.id == id) delProduct = p;
}
if (delProduct != null) {
productList.remove(delProduct);
}
break;
}
}
Artur Khristoforov
20 уровень
Помогите разобраться как получается правильный ответ из определённого куска кода.
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Artur Khristoforov
24 февраля 2022, 13:16
конкретно интересует логика обновления файла
Product productUpdate = null;
for (Product p : productList) {
if (p.id == id) {
productUpdate = p;
}
}
if (productUpdate != null) {
productUpdate.name = name;
productUpdate.price = price;
productUpdate.quantity = quantity;
}
break;
получается мы тут проходим по листу списка данных (productList) и находим совпадение по id и присваиваем эти данные со списка в созданную ранее (временную) переменную, класса Product, далее в этой временной переменной (productUpdate) обновляем значения. Вопрос в том, что с основным списком(productList) мы ничего не делаем (данные не обновляем). Получается мы только обновляем данные во временной переменной (productUpdate) которая нигде не используется (но задача всё равно прошла)
к примеру в кейсе с удалением мы удаляем данные в списке данных (productList) которые потом и будем заносить в файл
0
hidden #598481
24 февраля 2022, 13:20решение
У тебя обе переменные ссылаются на один и тот же объект. Когда ты что-то изменяешь, обращаясь через одну из переменных, изменения касаются самого объекта, ссылка на который содержится в переменной, и соответственно, если обратиться к этому же объекту из списка, у него будут изменены поля, т.к. объект типа Product один и тот же.
+2
Artur Khristoforov
1 марта 2022, 12:30
Спасибо, сейчас поэкспериментировал и действительно это так, даже не мог подумать о таком, что же я делаю на 20 уровне)
0