Проблема
Массив перезаписывается без видимой причины
я написал цикл, в котором я заполнить массив с объектами Sum. Все работает нормально, но как только цикл переходит к следующей итерации, он перезаписывает первый индекс массива.
Что есть я пытался
Я попытался посмотреть, может быть, моя проблема заключается в другом фрагменте кода (например, мой класс Sum). Но не мог найти ничего, что могло бы нарушить цикл.
Я попытался найти другие переменные с тем же именем (даже в других методах, так как я был в отчаянии) и посмотреть, могу ли я изменить свой итератор где-то еще. Я не мог найти ничего подобного.
Я пробовал оглядываться по интернету и так найти что-то, связанное с случайным переписыванием массивов, но ничего не мог найти.
Код
public Task(Object[] parameters)
{
this.number_of_sums = Integer.parseInt((String)parameters[0]);
this.variables_per_sum = Integer.parseInt((String)parameters[1]);
this.sum_parameters = new Object[this.variables_per_sum];
this.sums = new Sum[this.number_of_sums];
int z = 0;
for(int i = 0; i < this.number_of_sums; i++)
{
int x = 0;
for(int j = (2 + z); j < ((this.variables_per_sum + 2) + z); j++)
{
this.sum_parameters[x] = parameters[j];
x++;
}
this.sums[i] = new Sum(this.sum_parameters);
System.out.println("Index 0: "+sums[0]); //1st iteration: 1 + 1 //2nd iteration: 2 - 1
System.out.println("Index 1: "+sums[1]); //1st iteration: null //2nd iteration: 2 - 1
z += this.variables_per_sum;
}
}
Я ожидаю выход 1 + 1 и 2 - 1. Однако я получив следующее: 2 - 1 и 2 - 1, когда я закончил.
Если кто-то видит что-либо, что я делаю неправильно, или хотел бы видеть дополнительную информацию или код на моей стороне, скажите об этом. Заранее спасибо.
Ваш код трудно следовать. Лучшая ставка? Пройдите в отладчике и посмотрите, что происходит. Вы выясните это быстрее, чем получить ответ здесь. – duffymo
Все ваши 'Sum' используют один и тот же массив (' this.sum_parameters'). Вы должны сделать новый на каждую основную итерацию. – Esailija
@Esailija Что вы подразумеваете под этим? Я хочу, чтобы каждый 'Sum' хранился в том же массиве, только с другим индексом (конечно). Как я могу предотвратить это? @duffymo Спасибо, я понимаю, что код трудно выполнить (хотя он работает так, как предполагается, за исключением хранения результатов в массиве). Мой единственный вопрос заключается в том, почему 'Sum' сохраняется в каждом индексе вместо одного индекса. – Bono