У меня есть цикл, в котором я вычисляю значение и добавляю его в список.Итак, я делаю что-то вроде этого:
x = getValue()
values.add(x)
while (true) {
x = getValue();
values.add(x)
}
Я обнаружил, что этот подход не работает, так как я добавляю тот же экземпляр в список.Более подробно, в каждом цикле цикла я заново присваиваю новое значение x
и, изменяя значения всех элементов, которые уже были добавлены в список (таким образом, в конце я получаю список идентичных элементов).
Чтобы решить эту проблему, я сделал следующее:
x = getValue();
Integer[] valueToAdd = new Integer[n];
for (int i=0; i<n; i++) {
valueToAdd[i] = x[i];
}
while (true) {
x = getValue();
y = new Integer[n];
for (int i=0; i<n; i++) {
valueToAdd[i] = x[i];
}
values.add(valueToAdd)
}
Таким образом, я хотел создать новый экземпляр каждый раз, когда захочу добавить значение в список.Но это не работает, так как я получаю дубликат ошибки локальной переменной.
Мне также странно, что у меня нет этой ошибки, если я объявляю одну и ту же переменную много раз в цикле.Проблема появляется, только если я сначала объявляю новую переменную вне цикла, а затем также в цикле.
Есть ли способ в Java повторно использовать одно и то же имя для разных экземпляров?
ДОБАВЛЕНО Мне нужно уточнить некоторые вопросы.Я не показал весь код.У меня есть команда break
в цикле (когда новое значение не может быть сгенерировано, я выхожу из цикла).x
и value
имеют тип Integer[]
.
ДОБАВЛЕНО 2 Поскольку уже упоминалось, что проблема может быть в getValue()
, мне нужно более подробно здесь.На самом деле у меня нет getValue()
в моем коде (я использовал getValue()
здесь, чтобы сделать мой пример короче).В моем коде у меня было:
Integer[] x = new x[n];
while (true) {
for (int i=0; i<n; i++) {
x[i] = y[i];
}
values.add(x)
}
И это не сработало, поскольку в моем списке values
были идентичные элементы (и я знаю, что в цикле в каждом цикле x
было новое значение).
ДОБАВЛЕНО 3
Почему все элементы моего списка одинаковы?