Хранить нечетные числа в массиве с помощью цикла for

#java #arrays #loops #for-loop

#java #массивы #циклы #for-цикл

Вопрос:

Я пытаюсь создать array named odds , который хранит все нечетные числа между -6 и 38 в нем, используя for цикл.

 int[] odds = new int[22];

for (int i = -6, m = 0; i <= 38 amp;amp; m < 22; i  , m  ) {
    if (i % 2 != 0) {
        odds[m] = i;
    }
}
 

Однако это не работает. Любая помощь приветствуется. Спасибо.

Ответ №1:

Вы увеличиваете m каждый раз, когда выполняется цикл. Таким образом, для i = -6 вы будете хранить с индексом 0, но при i = -4 вы будете хранить с индексом 2. Вы пропускаете индексы. Лучшим методом было бы использовать тот факт, что мы знаем, что каждое другое число нечетное, и просто увеличивать цикл на 2 каждый раз:

 int[] odds = new int[22];
for (int i = -5, m = 0; i <= 38; i = i   2, m  ) {
    odds[m] = i;
}
 

Комментарии:

1. @CyberMaestro рад помочь! Если это было полезно, пожалуйста, проголосуйте и примите =]

Ответ №2:

В настоящее время вы разрешаете переменной m , которая отслеживает индекс для коэффициентов в вашем массиве, перемещаться с фактическим значением нечетного числа. Чтобы исправить это, переместите m счетчик индекса массива за пределы for цикла, который проверяет коэффициенты:

 int[] odds = new int[22];
int m = 0;

for (int i = -6; i <= 38; i  ) {
    if (i % 2 != 0) {
        odds[m] = i;
          m;
    }
}
 

Ответ №3:

Вы должны увеличивать m только в том случае, если вы сохраняете новое нечетное число, поэтому удалите m в своем операторе for и измените свои коэффициенты присваивания [m ] = i;

Ответ №4:

Вы увеличиваетесь m с каждой итерацией.

 int[] odds = new int[22];
int oddCount = 0;
for (int i = -6; i <= 38;i  ) {
    if (i % 2 != 0) {
        odds[oddCount] = i;
        oddCount  ;
    }
}
 

Ответ №5:

Лучшее решение — использовать оба варианта, предложенные Tim и nhouser:

 int[] odds = new int[22];
int m = 0;
for (int i = -5; i < 38; i  = 2) {
  odds[m  ] = i;
}