2017-07-01 59 views
0

我有這個類:如何使用foreach進行類迭代?

import java.util.Iterator; 
import java.util.HashMap; 
import java.util.Map; 

public class Polynomial<T> implements Iterable<T> { 
    Map<Integer, Object> polynomial; 

    public Polynomial(){ 
     polynomial = new HashMap<Integer, Object>(); 
    } 
    public Polynomial(int numberOfMembers){ 
     polynomial = new HashMap<Integer, Object>(numberOfMembers); 
    } 
    public void addElm(int power, int coefficient){ 
     if (power < 0) { 
      power = Math.abs(power); 
      throw new RuntimeException("ERROR: The power must be an absolute number, converting to absolute"); 
     } 
     for (Map.Entry m : polynomial.entrySet()) { 
      if ((Integer) m.getKey() == power){ 
       polynomial.put(power,m.getValue()); 
      } 
     } 
    } 
    @Override 
    public Iterator<T> iterator() { 
     // TODO Auto-generated method stub 
     return (Iterator<T>) new Object; 
    } 

} 

這裏是主要功能的一部分:

Polynomial<Integer> p1=new Polynomial<Integer>(); 
for (Integer r : p1) 
System.out.println(r.toString()); 

正如你可以在上面看到我需要多項式類的foreach,這就是爲什麼多項式實現Iterable接口。但我的問題是我不知道如何實現iterator()方法。我怎樣才能做到這一點?

+1

,你會想到什麼迭代器給你?一系列地圖條目?你能證明你所嘗試過的嗎? –

+0

請通過[幫助中心](http://stackoverflow.com/help)閱讀,特別是[如何提出一個好問題?](http://stackoverflow.com/help/how-to-ask)和[我可以在這裏詢問什麼主題?](http://stackoverflow.com/help/on-topic)。 從第二個鏈接:「提出作業幫助的問題必須包括您迄今爲止解決問題所做的工作的摘要,並描述您解決問題的難度。」 –

回答

3

你的代碼很混亂。什麼是T?爲什麼T不在課堂上使用?什麼是coefficient參數用於?你想做什麼?

我最好的猜測是T是多項式的係數類型,你試圖返回一個遍歷係數的迭代器。

我改寫了你這樣的代碼:

public class Polynomial<T> implements Iterable<T> { 
    Map<Integer, T> polynomial; 

    public Polynomial(){ 
     polynomial = new HashMap<Integer, T>(); 
    } 
    public Polynomial(int numberOfMembers){ 
     polynomial = new HashMap<Integer, T>(numberOfMembers); 
    } 
    public void addElm(int power, T coefficient){ 
     if (power < 0) { 
      throw new RuntimeException("ERROR: The power must be an absolute number"); 
     } 
     polynomial.put(power,coefficient); 
    } 
    @Override 
    public Iterator<T> iterator() { 
     return polynomial.values().iterator(); 
    } 

} 
+0

當然這個實現在實際中是沒有用的,因爲迭代器不會以任何指定的順序返回係數,但是我們應該讓它去找出如何解決這個問題。 :) – biziclop