package ru.job4j.iteration;

import java.util.Iterator;
import java.util.NoSuchElementException;

/**
 * Класс для описания итератора чисел.
 * @author vkovrov
 * @version 0.1
 * @since 0.1
 */
public class EvenIterator implements Iterator {

    /**
     * Поле для массива.
     */
    private final int[] array;

    /**
     * Поле для индекса.
     */
    private int index = 0;

    /**
     * Поле для индекса поиска элементов в методе hasNext.
     */
    private int fakeIndex = 0;

    /**
     * Конструктор класса.
     * @param array массив.
     */
    public EvenIterator(int[] array) {
        this.array = array;
    }

    /**
     * Метод для определения наличия следующего четного элемента в массиве.
     * @return есть ли следующий четный элемент в массиве.
     */
    @Override
    public boolean hasNext() {
        boolean result;
        if (fakeIndex < array.length) {
            result = array[fakeIndex++] % 2 == 0 || hasNext();
        } else {
            result = false;
        }
        fakeIndex = index;
        return result;
    }

    /**
     * Метод для возвращения следующего четного элемента массива.
     * @return следующий четный элемент массива.
     */
    @Override
    public Object next() {
        fakeIndex = index;
        if (!hasNext()) {
           throw new NoSuchElementException();
        } else {
            int item = array[index++];
            fakeIndex = index;
            return item % 2 == 0 ? item : next();
        }

    }
}

@@ -844,24 +844,32 @@
 olean result
+ = false
 ;%0A        if
@@ -866,18 +866,21 @@
         
-if
+while
  (fakeIn
@@ -913,25 +913,20 @@
         
-result = 
+if (
 array%5Bfa
@@ -948,67 +948,79 @@
 == 0
- %7C%7C hasNext();%0A        %7D else %7B%0A            result = false;
+) %7B%0A                result = true;%0A                break;%0A            %7D
 %0A   
@@ -1295,86 +1295,46 @@
    i
-f (!hasNext()) %7B%0A           throw new NoSuchElementException();%0A        %7D else
+nt item = 0;%0A        while (hasNext())
  %7B%0A 
@@ -1340,28 +1340,24 @@
             
-int 
 item = array
@@ -1410,23 +1410,20 @@
         
-return 
+if (
 item %25 2
@@ -1431,35 +1431,162 @@
 == 0
- ? item : next();%0A        %7D
+) %7B%0A                break;%0A            %7D%0A        %7D%0A        if (item == 0) %7B%0A            throw new NoSuchElementException();%0A        %7D%0A        return item;
 %0A%0A  

fix task - 5.1.2. Создать итератор четные числа [#150]