2015-05-10 82 views
-1

我使用在我的程序三類:toString方法

  • Term類變量係數和指數,toString()方法等
  • Polynome類,使用一個ArrayList存儲不同的Term對象。
  • Main運行該程序的類。

我可以在我的Polynome類中使用ArrayList的toString方法嗎?我在努力,但我做不到。

我需要我的polynome輸出像這樣:[3倍^ 2,3^1^1X 0]

我真的很困惑,我打電話期限的toString方法,採用一個for循環分別訪問每個術語。

我的代碼:

public class Term { 
    private int coëfficiënt; 
    private int exponent; 

    public Term(int coëfficiënt, int exponent) { 
     this.coëfficiënt = coëfficiënt; 
     this.exponent = exponent; 
    } 

    public int getCoef() { 
     return coëfficiënt; 
    } 

    public int getExp() { 
     return exponent; 
    } 

    public String toString() { 
     return coëfficiënt + "x^" + exponent; 
    } 
} 

Polynome類:

public class Polynoom { 
    private ArrayList<Term> polynoom; 

    public Polynoom() { 
     polynoom = new ArrayList<Term>(); 
    } 

    public void add(Term term) { 
     polynoom.add(term); 
    } 

    public Term get(int i) { 
     return polynoom.get(i); 
    } 

    public int size() { 
     return polynoom.size(); 
    } 

    public String toString() { 
     // what should I write here? 
    } 
} 

主要類:

public class opgave3 { 
    public static void main(String[] args) { 
     Polynoom polynoom1, polynoom2, sompolynoom; 

     polynoom1 = new Polynoom(); 
     polynoom1.add(new Term(1, 2)); 
     polynoom1.add(new Term(3, 1)); 
     polynoom1.add(new Term(1, 0)); 

     polynoom2 = new Polynoom(); 
     polynoom2.add(new Term(-1, 3)); 
     polynoom2.add(new Term(2, 2)); 
     polynoom2.add(new Term(-5, 0)); 

     System.out.println("Tests: "); 
     System.out.println(polynoom1.toString()); 
     for (int i = 0; i < polynoom1.size(); i++) { 
      System.out.println(polynoom1.get(i).toString()); 
     } 
     System.out.println(polynoom1.get(0).toString()); 
    } 
} 
+6

你忘記發佈您的代碼。 –

+0

「我可以在我的Polynome類中使用ArrayList的toString方法嗎?」是的,對於解釋代碼問題的更詳細的答案,我們需要先看看它。 – Pshemo

+0

要添加更多的信息到你的問題使用[編輯]選項(只是說因爲缺乏'編輯器'徽章表明你從來沒有使用它,所以也許你不知道它)。 – Pshemo

回答

2

編輯:簡單的回答,因爲你把你的代碼改寫是把

return polynoom.toString(); 

,你已經表示。然後在你的主類,你可以簡單地寫

System.out.println(polynoom1); 

顯示所需格式的內容。

正如Tenner所說,使用ArrayList的toString()方法來獲得所需的輸出。但也請確保您的期限類都有自己的一個有用的toString方法:

public class Term { 
    private int co, ex; 

    public Term(int coeff, int exp) { 
     co = coeff; 
     ex = exp; 
    } 

    @Override 
    public String toString() { 
     return co + "x^" + ex; 
    } 
} 
4

你只需要使用您的ArrayListtoString()方法爲Polynome結果的方法toString()

public class Polynome { 
    public ArrayList<Term> terms; 

    @Override 
    public String toString() { 
     if (terms != null) { 
      return terms.toString(); 
     } else { 
      return ""; 
     } 
    } 
} 
1

長話短說,你總是可以在任何使用toString(),即使它是一個用戶定義的類。當你調用該方法時,它會調用最接近的父類toString()方法,該方法保證在Object中有一個。如果要控制在對象上調用的輸出toString(),則必須覆蓋它。事實上,如果您有一個類型爲ArrayList的成員的對象,則調用您的對象的toString()將包含大量您可能不需要的額外信息。爲了得到你想要的輸出,你需要有代碼通過@特納的回答,這是

public class Polynome { 
    public ArrayList<Term> terms; 

    @Override 
    public String toString() { 
     if (terms != null) { 
      return terms.toString(); 
     } else { 
      return ""; 
     } 
    } 
} 

給出,但你還需要在Term類重寫toString(),這樣的形式每學期輸出期望。這是必需的原因是,當您在ArrayList或任何其他容器上調用toString()時,它會遍歷容器,依次調用每個對象的toString(),添加容器類定義的任何格式。最終,TermtoString()將被調用,並且您可以通過在Term類中覆蓋它來控制該輸出。

至於問題的最後一部分,你不必叫Term「直接小號toString(),作爲調用ArrayListtoString()方法做到這一點對自己。

2

添加@Override toString()Term & Polynome類。 TermtoString()應返回格式爲係數 x^指數格式的字符串。

然後讓PolynometoString()yourArrayList.toString()

public static void main(String[] args) throws Exception { 
    Polynome polynome = new Polynome(); 
    polynome.addTerm(3, 2); 
    polynome.addTerm(3, 1); 
    polynome.addTerm(1, 0); 
    System.out.println(polynome); 
} 

public static class Term { 
    private int coefficient; 
    private int exponent; 

    public Term(int c, int e) { 
     coefficient = c; 
     exponent = e; 
    } 

    @Override 
    public String toString() { 
     return coefficient + "x^" + exponent; 
    } 
} 

public static class Polynome { 
    private List<Term> terms = new ArrayList<>(); 

    public void addTerm(int coefficient, int exponent) { 
     terms.add(new Term(coefficient, exponent)); 
    } 

    @Override 
    public String toString() { 
     return terms.toString(); 
    } 
} 

結果:

enter image description here

+0

'return terms.toString();'應該和'return Arrays.toString(terms.toArray())一樣工作;'' –