2013-04-23 96 views
0

嘿,我已經搜索了網絡,我很難找到這個問題的答案,所以我認爲這可能是不可能的,我能夠使用一個方法來調用一個單一的數組變量,每次調用從索引開始[ 0],每次我調用方法遍歷整個數組時,遞增1?或者是否有更好的方法來做到這一點,比如每次刪除第一個數組變量?返回一個數組值,每個方法調用從索引0開始,每次調用時遞增1。

感謝您的幫助,並牢記我是一個begginer,我只是想學習最好的方式來做事情。

+0

如果你想具體在陣列位置的值,那麼是有可能 - 這是與傳遞任何其他價值。我希望看到你所指的是一個例子,因爲它並不完全清楚問題。 – Makoto 2013-04-23 19:42:14

+0

你的問題不清楚。語句_「每次調用都調用一個數組變量」_沒有意義。一個不會「調用」數組變量。從你的描述中,你可能只需要一個簡單的數組訪問循環,如下面的@hvgotcodes所描述的那樣,但是你也可以尋找一種順序_returns_數組的元素......即數組迭代器的方法。這是什麼? – 2013-04-23 19:43:27

+0

它通常有助於用一個例子來解釋... – Dukeling 2013-04-23 19:49:38

回答

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,我想上面的代碼會更說教。但是,如果迭代器的實現是有趣的(如@大衛康拉德建議),我有一個就在這裏:

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."); 
    } 

} 
+0

您應該'實現java.util.Iterator '並實現'hasNext()'方法。如果hasNext()爲false,則將'getNext()'重命名爲'next()',並將其拋出'java.util.NoSuchElementException',並且拋出'remove()'方法並且總是拋出'UnsupportedOperationException'。在任何地方擺脫'static',並將數組傳遞給構造函數,並且您將擁有一個不錯的IntArrayIterator。 (Then make it generic。) – 2013-04-23 20:38:11

+0

@DavidConrad,我添加了一個通用ArrayIterator的例子 – 2013-04-23 21:23:09

+0

我正要做+1,但隨後你的答案開始變得越來越複雜。 – 2013-04-23 21:41:38

1

你的問題是有點不清楚,但我認爲這是你想要做

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

你需要確保someArraysomeFunction定義了什麼要點。

+0

這段代碼將在整個數組中通過for循環打印出來。我想要做的是打印每個方法調用每個下一個數組變量從0開始。 – ivanthemeh 2013-04-23 23:10:41

相關問題