package ru.job4j.iteration;

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

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

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

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

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

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

    /**
     * Метод для определения наличия следующего элемента простого числа в массиве.
     * @return есть ли следующий элемент простого числа в массиве.
     */
    @Override
    public boolean hasNext() {
        boolean result;
        if (fakeIndex < array.length) {
            result = this.isSimple(array[fakeIndex++]) || 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 isSimple(item) ? item : next();
        }
    }

    /**
     * Метод для определения является ли число простым.
     * @param number число.
     * @return является ли число простым.
     */
    public boolean isSimple(int number) {
        boolean isSimple = true;
        if (number == 1) {
            isSimple = false;
        }
        for (int i = 2; i < number; i++) {
            if (number % i == 0) {
                isSimple = false;
            }
        }
        return isSimple;
    }
}

@@ -869,24 +869,32 @@
 olean result
+ = false
 ;%0A        if
@@ -891,18 +891,21 @@
         
-if
+while
  (fakeIn
@@ -938,25 +938,20 @@
         
-result = 
+if (
 this.isS
@@ -979,67 +979,79 @@
 ++%5D)
- %7C%7C hasNext();%0A        %7D else %7B%0A            result = false;
+) %7B%0A                result = true;%0A                break;%0A            %7D
 %0A   
@@ -1341,87 +1341,46 @@
    i
-f (!hasNext()) %7B%0A            throw new NoSuchElementException();%0A        %7D else
+nt item = 0;%0A        while (hasNext())
  %7B%0A 
@@ -1386,28 +1386,24 @@
             
-int 
 item = array
@@ -1448,39 +1448,36 @@
 ex;%0A            
-return 
+if (
 isSimple(item) ?
@@ -1478,35 +1478,162 @@
 tem)
- ? 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   

fix task - 5.1.3. Создать итератор простые числа. [#151]