Как работает цикл 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
→ Ссылка