2011-09-15 62 views
1

要實現我有以下問題:產量在Python需要在Java

寫一個類需要一系列整數從生成一個數字一個發電機。包括兩個功能:1-總和2-平均值。

我知道yield語句是Python中的選擇,如果生成器需要通過在每一步返回一個一個地生成數字。

你們在java中怎麼做?我不知道怎樣才能實現這個

謝謝。

+0

你有什麼試過的?使用簡單的for-loop應該工作?或者你正在尋找更簡潔的東西? –

+0

你能告訴我們循環看起來有多簡單嗎?請確保數字只能從發生器中逐一生成。 – Bob

+0

如果這是家庭作業,它應該被標記爲這樣。 –

回答

4

如果你想實現「序列」類似的行爲,你可以選擇實現java.util.Iterator接口。

class RandomSequence implements Iterator<Integer>, Iterable<Integer> { 
    private int count; 
    private Random random; 


    public RandomSequence(int count) { 
     this.count = count; 
     this.random = new Random(); 
    } 

    Integer next() { 
     count--; 

     return random.nextInt(); 

    } 

    boolean hasNext() { 
     return count > 0; 
    } 

    Iterator<Integer> iterator() { 
     return this; 
    } 

    public static void main(String[] args) { 
     int n = 0; 
     for(int n: new RandomSequence(10)) 
      sum += n; 
    } 

} 
+0

嗨aav,你的代碼不工作。在java中,for(int n:new RandomSequence(10))是不允許的,它只能迭代一個數組或iterable的實例。 – Bob

+0

ups。對不起 - 我的錯。它必須是可迭代的 - 我現在將更新示例。 – aav