返回单个数组值,每个方法调用从索引0开始,每次调用递增1。

时间:2013-04-23 19:38:31

标签: java arrays

嘿伙计我在网上搜索过并且很难找到这个问题的答案所以我认为这可能是不可能的,我是否能够使用一个方法来调用单个数组变量,每个调用都从索引开始[0]每次调用方法遍历整个数组时递增1?或者有更好的方法可以像每次删除第一个数组变量一样吗?

感谢您的帮助,请记住我是一名初学者,我只是想学习最好的办法。

2 个答案:

答案 0 :(得分:1)

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

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

当然,您需要确保定义someArraysomeFunction

答案 1 :(得分: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.");
    }

}