#java #arrays #for-loop
#java #массивы #for-цикл
Вопрос:
У меня есть цикл for, который пытается расширить массив путем добавления нового элемента массива, который в два раза превышает предыдущее значение. например.
начиная с : array = {1}
заканчивается на: array = {1, 2, 4, 8, 16, и т.д.}
В настоящее время мой цикл for выдает массив, подобный этому: array = {1, 2, 2, 4, 4, 8, 8, 16} По какой-то причине он вводит одно и то же число дважды.
Просто посмотрите на переменную «input» как 21
for (int i = 0; (nums[i] * 2) < input; i )
{
if (i == 0)
{
nums = IncreaseArrayInt(nums, nums[(i)] * 2);
}
else
{
nums = IncreaseArrayInt(nums, nums[(i - 1)] * 2);
}
}
Вот функция, которую я использовал для расширения массива:
static int[] IncreaseArrayInt(int[] oldArray, int insertValue)
{
int[] newArray = new int[oldArray.length 1];
for(int i = 0; i < oldArray.length; i )
{
newArray[i] = oldArray[i];
}
newArray[oldArray.length] = insertValue;
return (newArray);
}
Он очень близок к работе по назначению и надеется, что некоторые смогут увидеть проблему, которую я пропустил
Ответ №1:
Изменить:
nums = IncreaseArrayInt(nums, nums[(i - 1)] * 2);
Для:
nums = IncreaseArrayInt(nums, nums[(i)] * 2);
Комментарии:
1. Нет проблем : D @Evano’R
Ответ №2:
Проблема в том, что первые два прохода в цикле for оба делают insertValue 1 * 2 . вы должны избавиться от оператора if else и просто использовать nums = IncreaseArrayInt(nums, nums[(i)] * 2);
для всех возможных значений i .