Как работает цикл for в данной ситуации?
Подскажите, пожалуйста, как на выходе получается count = 14? У меня выходит 12, где моя ошибка?
public class Mix4 {
int counter = 0;
public static void main(String[] args) {
int count = 0;
Mix4[] m4a = new Mix4[20];
for(int x = 0; x < 9; x++) {
m4a[x] = new Mix4(); // в каждый элемент создаем объект с ссылкой m4a
m4a[x].counter = m4a[x].counter + 1; // 0 + 1 = 1; 1 + 1 = 2;
count = count + 1; // 0+1=1; 2+1=3; 3+1=4; 4+1=5; 6+1=7; 8+1=9; 9+1=10; 10+1=11;11+1=12;
count = count + m4a[x].maybeNew(x); // 1+1=2; 3+1=4; 4+1=5; 5+1=6; 7+1=8; 9+0=9; 10+0=10; 11+0=11;
}
System.out.println(count + " " + m4a[1].counter);
}
public int maybeNew(int index){
if(index < 5){
Mix4 m4 = new Mix4();
m4.counter = m4.counter + 1;
return 1;
}
return 0;
}
}
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
У вас в коде цикл от 0 до 8 (включительно), а это 9 итераций.
На каждой итерации вы обязательно увеличиваете count на 1 и еще на 1 если значение индекса меньше 5 (условие в maybeNew):
Т.е. в первые 5 итераций (от 0 до 4) у вас будет в count = 10 (5 * 2), а в оставшиеся 4 итерации (от 5 до 8) добавится только по 1, вот и набралось 14:
Добавьте в коде вывод в консоль:
for (int x = 0; x < 9; x++) {
...
System.out.println(String.format("#%s. %s", x, count));
}
и получите подтверждение:
#0. 2
#1. 4
#2. 6
#3. 8
#4. 10
#5. 11
#6. 12
#7. 13
#8. 14