不停地推进索引前进和后退

时间:2014-02-25 14:53:02

标签: java

我正在使用ArrayList处理一个项目,我只需要将索引推进一次,但是当它到达最后一个索引时,我需要它向后转到0索引,然后重新开始。如果我可以使用循环,这很简单,但我需要它只在调用方法时向前(或向后)前进一个索引。 任何人都有一些建议如何解决这个问题?

我为缺乏信息而道歉。我正在制作一个布尔对象的arraylist,我试图做的就是这样,当我调用我的方法时,我将下一个索引设为true(其他索引为false),我的问题是让它停在最后索引,反过来。

例如,想一个larson扫描仪。我的问题是,虽然循环这很简单,但我需要它只在调用方法时推进一个索引,而不是不断前进。

true false false false

false true false false

false false true false

false false false true

false false true false

false true false false

对不起有困惑

1 个答案:

答案 0 :(得分:3)

假设数组是一个字段:

Object[] arr;
boolean backwards; //init: false
int current; //init: 0

public Object getNextObject() {
    if (arr.length == 0) {
        throw new IllegalArgumentException("Array cannot be empty!");
    }
    int index;
    if (backwards) {
        index = --current;
        if (index <= 0) {
            backwards = false;
            index = 0;
        }
    } else {
        index = ++current;
        if (index >= arr.length) {
            backwards = true;
            index = arr.length - 1;
        }
    }
    Object back = arr[index];
    current = index;
    return back;
}

这也基本上适用于您使用过的任何数据结构(与.length交换.size()等)