#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;
}