#java
#java
Вопрос:
Я писал фрагмент кода, в котором после проверки значений в определенном списке и на основе некоторых внутренних проверок приложения обновлял значение списка с помощью цикла. Однако в этом процессе во время первой попытки цикла обновляются значения для всех индексов в списке . Ниже приведен код. Не мог бы кто-нибудь, пожалуйста, помочь мне, почему он обновляется для всех индексов во время первой итерации, но не для первого индекса только во время первой итерации?
public class Xlist {
private String parm1;
private String param2;
public String getParam1() {
return param1;
}
public void setParam1(String param1) {
this.param1 = param1;
}
public String param2;
}
public Void setParam2(String param2) {
this.param2 = param2;
}
}
Использование:
Xlist xlist =[{1,Alpha},{2,Beta},{3,Gamma}],
for(int i=0;i<xlist.size();i ){
if(i==0){
logger.info("Working on fixing the bug which is updating all the list values in single shot. Looking for values before first update");
logger.info("Value at 1" ":" xlist.get(0).getParam2());
logger.info("Value at 2" ":" xlist.get(1).getParam2());
logger.info("Value at 3" ":" xlist.get(2).getParam2());
}
xlist.get(i).setParam2("Hello" String.valueof(xlist.get(i).getParam2()));
if(i==0){
logger.info("Working on fixing the bug which is updating all the list values in single shot. Looking for values after first update");
logger.info("Value at 1" ":" xlist.get(0).getParam2());
logger.info("Value at 2" ":" xlist.get(1).getParam2());
logger.info("Value at 3" ":" xlist.get(2).getParam2());
}
}
Вывод выглядит следующим образом:
Работаем над исправлением ошибки, которая обновляет все значения списка за один выстрел. Поиск значений перед первым обновлением
Value at 1: Alpha
Value at 2: Beta
Value at 3: Gamma
Работаем над исправлением ошибки, которая обновляет все значения списка за один выстрел. Поиск значений после первого обновления
Value at 1: Hello Alpha
Value at 2: Hello Alpha
Value at 3: Hello Alpha
Ответ №1:
Пожалуйста, посмотрите на свой код:
Вы делаете и внутри этого выполняете обновление пытаетесь напечатать все 3 значения, но обновляете только ОДИН РАЗ.
if (i==0) {
}
Избавьтесь от if (i==0){} из всех мест и измените свои операторы print и set на use (i) вместо этого do:
logger.info("Value at " i ":" xlist.get(i).getParam2());
xlist.get(i).setParam2("Hello" String.valueof(xlist.get(i).getParam2()));
Комментарии:
1. Текст с отступом в 4 пробела, пустые строки выше и ниже зададут стиль кода
2. извините, я постараюсь улучшить это 🙂
3. Извините, я думаю, что я не заставил вас понять мой вопрос. Я использую условие i==0 для печати проверки значений по всем индексам перед setParam2() и после setParam2() во время первой итерации. После setParam2 на первой итерации цикла все три значения обновляются с помощью xlist.get(i).setParam2(«Привет» String.valueof(xlist.get(i).getParam2()));
4. Я не понимаю ваших требований @V3nky. Вы пытаетесь обновить все сразу? Обновите свой вопрос до того, что именно вам нужно.
5. Обновил мой вопрос. Проблема заключается в том, что во время первой итерации цикла функция установки обновляет значения для индексов, но не только для первого индекса. Согласно логике xlist.get(i).setParam2(«Hello» String.valueof(xlist.get(i).getParam2())); , он должен обновить значение при передаче индекса, но он обновляет все значения индекса с индексов 0-2.