TransWikia.com

Проблема с выводом массива в итераторе. Пропускается элемент с нулевым индексом

Stack Overflow на русском Asked by XenoProxy on November 25, 2021

Суть состоит в том, что в main мы можем задавать шаг для итерации через iterator.changeSpeed(…). Итератор перебирает и выводит элементы массива. Проблема состоит в том, что какое бы значение для шага мы не вводили, всегда будет пропускаться 0-й элемент.

        Harmonica harmonica = new Harmonica(originPointList);            
        PointIterator iterator = harmonica.iterator(); //вывод списка точек в консоль
        iterator.changeSpeed(1);
        System.out.println("List's length: " + harmonica.getPointsListLength() + "n");

        while (iterator.hasNext()){
            System.out.println(iterator.next());               
        }

Я знаю, что проблема состоит в этой части кода (что указана ниже), а именно в строке return pointList.get(index += speed), т.к. к index сначала прибавляется указанное значение шага, а только потом возвращается index. Если в условии указать index =+ speed, то программа зациклится на выводе элемента с 1-м индексом.

public PVTPoint next() {
        if(this.hasNext()) {
            return pointList.get(index = + speed);
        }else {
            throw new NoSuchElementException();
        }
    }

Мой вопрос состоит в том, как решить этот момент, чтобы сначала возвращался index, а только потом прибавлялся новый шаг и не пропускался элемент с 0-м индексом?

2 Answers

Альтернативный вариант, при котором индекс будет рассчитываться каждый раз:

public PVTPoint next() {
    if (this.hasNext()) {
        return pointList.get((speed - 1) * index + index++);
    } else {
        throw new NoSuchElementException();
    }
}

Answered by Alexandr on November 25, 2021

    if (this.hasNext()) {
        PVTPoint result = pointList.get(index);
        index += speed;
        return result;
    } else {

Answered by Igor on November 25, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP