package pro.ru.job4j.iterator;

import java.util.Iterator;

/**
 * Class IteratorSimple.
 *
 * @author Andrey Lemdyanov {lemdyanov5@mail.ru)
 * @version $Id$
 * @since 10.06.2017
 */
public class IteratorSimple implements Iterator {
    /**
     * Поле массив.
     */
    private final int[] values;
    /**
     * Позиция в массиве.
     */
    private int position = 0;
    /**
     * Индекс простого числа.
     */
    private int index;

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

    /**
     * Метод для проверки простое ли число.
     *
     * @return простое?
     */
    public int checkSimple() {
        for (int i = position; i < values.length; i++) {
            if (values[i] == 1 || values[i] == 2 || values[i] == 3) {
                position++;
                return i;
            }
            boolean flag = true;
            for (int j = 2; j < values[i]; j++) {
                if (values[i] % j == 0) {
                    position++;
                    flag = false;
                    break;
                }
            }
            if (flag) {
                position++;
                return i;
            }
        }
        return -1;
    }

    /**
     * Переопределение hasNext.
     *
     * @return есть ли следующее значение?
     */
    @Override
    public boolean hasNext() {
        index = checkSimple();
        return index != -1;
    }

    /**
     * Переопределение next.
     *
     * @return значение.
     */
    @Override
    public Object next() {
        return values[index];
    }
}

@@ -369,77 +369,8 @@
 = 0;
-%0A    /**%0A     * %D0%98%D0%BD%D0%B4%D0%B5%D0%BA%D1%81 %D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B3%D0%BE %D1%87%D0%B8%D1%81%D0%BB%D0%B0.%0A     */%0A    private int index;
 %0A%0A  
@@ -771,36 +771,8 @@
 ) %7B%0A
-                position++;%0A
     
@@ -936,40 +936,8 @@
 ) %7B%0A
-                    position++;%0A
     
@@ -1053,36 +1053,8 @@
 ) %7B%0A
-                position++;%0A
     
@@ -1280,15 +1280,14 @@
     
-index =
+return
  che
@@ -1300,30 +1300,8 @@
 le()
-;%0A        return index
  != 
@@ -1421,32 +1421,66 @@
 Object next() %7B%0A
+        position = checkSimple();%0A
         return v
@@ -1489,13 +1489,18 @@
 ues%5B
-index
+position++
 %5D;%0A 

task 151