package pro.ru.job4j.iterator;

import java.util.Iterator;

/**
 * Class IteratorArray.
 *
 * @author Andrey Lemdyanov {lemdyanov5@mail.ru)
 * @version $Id$
 * @since 03.06.2017
 */
public class IteratorArray implements Iterator {
    /**
     * Поле двухмерного массива.
     */
    private final int[][] values;
    /**
     * Поле индекс - количество массивов в массиве.
     */
    private int index = 0;
    /**
     * Поле количества элементов в массиве.
     */
    private int indexdeep = 0;

    /**
     * Конструктор.
     *
     * @param values двухмерный массив.
     */
    public IteratorArray(final int[][] values) {
        this.values = values;
    }

    /**
     * Метод для перехода внутри двумерного массива.
     */
    public void nextArray() {
        if (indexdeep == values[index].length && index < values.length - 1) {
            index++;
            indexdeep = 0;
        }
    }

    /**
     * Переопределение метода hasNext.
     *
     * @return есть ли еще элемент?
     */
    @Override
    public boolean hasNext() {
        nextArray();
        return values.length - 1 >= index && values[index].length - 1 >= indexdeep;
    }

    /**
     * Переопределение метода next.
     *
     * @return значение текущего элемента и перевод каретки на следующий.
     */
    @Override
    public Object next() {
        nextArray();
        return values[index][indexdeep++];
    }
}

@@ -398,24 +398,151 @@
  index = 0;%0A
+%0A    /**%0A     * %D0%93%D0%B5%D1%82%D1%82%D0%B5%D1%80 %D0%B8%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%D0%B0.%0A     *%0A     * @return %D0%B8%D0%BD%D0%B4%D0%B5%D0%BA%D1%81.%0A     */%0A    public int getIndex() %7B%0A        return index;%0A    %7D%0A%0A
     /**%0A    
@@ -581,32 +581,33 @@
 %D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0%B5.%0A     */%0A
+%0A
     private int 
@@ -1176,37 +1176,16 @@
 ext() %7B%0A
-        nextArray();%0A
         
@@ -1187,24 +1187,25 @@
      return 
+(
 values.lengt
@@ -1259,17 +1259,128 @@
 ndexdeep
-;
+)%0A                %7C%7C (values.length - 1 %3E= this.getIndex() + 1 && values%5Bthis.getIndex() + 1%5D.length - 1 %3E= 0);%0A
 %0A    %7D%0A%0A

task 9539