0

嘿家伙,我已经搜索了网络并且很难找到这个问题的答案,所以我认为这可能是不可能的,我是否能够使用一种方法来调用单个数组变量,每次调用都从 index[0] 开始每次我调用该方法遍历整个数组时递增 1?或者有没有更好的方法来做到这一点,比如每次都删除第一个数组变量?

感谢您的帮助,请记住,我是一个初学者,只是想学习做事的最佳方式。

4

2 回答 2

1

据我了解,您想要类似Iterator的东西,这是完全可能的。这是一个例子:

public class IteratorTest{

    static int[] numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    static int index = 0;

    public static void main(String[] args){
        for (int i = 0; i < 10; i++){
            System.out.println(getNext());
        }
    }

    public static int getNext(){
        return numbers[index++];
    }

}

调用时会getNext()抛出异常,index >= numbers.length但这几乎是我能理解的想法。


编辑

我在这里有一个 ArrayIterator,我认为上面的代码会更具说教性。但是,如果 Iterator 的实现很有趣(正如@David Conrad 建议的那样),我在这里有一个:

public class ArrayIterator<E> implements Iterator<E>{

    private E[] elements;
    private int index;

    public ArrayIterator(E[] elements){
        this.elements = elements;
        index = 0;
    }

    @Override
    public boolean hasNext(){
        return index < elements.length;
    }

    @Override
    public E next(){
        if(!hasNext()){
            throw new NoSuchElementException("No more elements in the array.");
        }
        return elements[index++];
    }

    @Override
    public void remove(){
        throw new UnsupportedOperationException("Remove operation is not supported.");
    }

}
于 2013-04-23T19:45:41.197 回答
1

你的问题有点不清楚,但我认为这是你想做的事情的要点

for (int i = 0; i < someArray.length; i++) {
    someFunction(someArray[i]);
}

当然你需要确定someArray并且someFunction被定义。

于 2013-04-23T19:40:05.887 回答