2014-03-25 42 views
4

我需要一些建議。我創建了三個班級Om(人類),Parinte(父親)和Copil(孩子)。我已經創建了這個類的構造函數。在主要課堂上,我爲每個班級創建了一個實例。現在我將我的對象存儲在一個ArrayList中。在此之後,我將創建一些方法來處理我的對象,如按名稱排序它們到Z.我的問題是,如何將這些對象打印成明確的字符串格式後,我會調用我的排序方法,因爲我每次都得到像@的東西...當我嘗試只是打印存儲在我的集合中的值?關於集合的Java操作

我的代碼: 庵(人類)類:

public class Om { 
String nume; 
String prenume; 
String cnp; 

Om(String nume,String prenume,String cnp){ 
this.nume=nume; 
this.prenume=prenume; 
this.cnp=cnp; 
} 
} 

我Parinte(父)類:

public class Parinte extends Om{ 
String domiciliu; 
Parinte(String nume, String prenume, String cnp, String domiciliu){ 
    super(nume,prenume,cnp); 
    this.domiciliu=domiciliu; 
} 
} 

我Copil(子)類:

public class Copil extends Parinte { 
int varsta; 
Copil(String nume, String prenume, String cnp, String domiciliu, int varsta){ 
    super(nume,prenume,cnp,domiciliu); 
    this.varsta=varsta; 
} 
} 

而且最後我的主要課程:

import java.util.ArrayList; 
import java.util.Arrays; 
public class main { 

public static void main(String[] args) { 
    Om om1=new Om("Dubolari", "Dragos", "2006004034120"); 
    Parinte p1=new Parinte("Enache","Andrei","2006004034120","Al. Cel Bun 13"); 
    Copil c1 = new Copil("Enache","Valeriu","2006004034120","Al. Cel Bun 13",15); 
    ArrayList<Om> colectie = new ArrayList<Om>(); 
    colectie.add(om1); 
    colectie.add(p1); 
    colectie.add(c1); 

} 
} 
+0

你怎麼能指望你** **定製值要打印的,爲什麼? –

+1

覆蓋類中的toString方法。 –

+0

我希望我的數值可以像表格一樣打印出來。例如,使用我的排序方法,我可以按名稱將它們組織到A到Z.關於壓倒一切,你可以請更清楚一點,因爲我從來沒有使用過他們,我在哪裏可以讀到這個? – drgPP

回答

2

您需要覆蓋對象的toString()。這裏有一個例子:

public class Copil extends Parinte { 
    int varsta; 
    Copil(String nume, String prenume, String cnp, String domiciliu, int varsta){ 
     super(nume,prenume,cnp,domiciliu); 
     this.varsta=varsta; 
    } 

    @Override 
    public String toString() { 
     return "Copil. Nume" + nume + " Varsta: " + varsta; //Whatever you want to do here 
    } 

} 

然後你可以遍歷您的收藏和打印的對象:

for(Om o: colectie){ 
    System.out.println(o); //printing calls the toString() 
} 
+0

非常感謝,我會嘗試它,直到生病得到正確的輸出。 – drgPP

+0

您的歡迎。您也可以在您的基類中重寫'toString()',具體取決於您想要打印的內容。 – Tyler

1

當您嘗試打印出清單的內容,Java運行時的基本要求隱式繼承的toString每個類的()方法。由於您沒有覆蓋此方法,因此它會調用以您可能不期望的格式打印的默認實現(字符串以@開頭)

1

您可以嘗試使用FastCode模板,在那裏你可以print fields of a class。您可以根據您的要求輕鬆編輯模板。請參閱說明如何創建new/edit templates的文檔。

例如,在fastcode模板中,您可以選擇像logger.debug,logger.trace,System.out.println,so ..等變體來打印變量。當您選擇模板和課程時,您將獲得課堂中提供的所有變量以供選擇,如快照所示。一旦你選擇了所有的變量,你就會得到下面的代碼。您可以根據您的要求自定義輸出。

System.out.println("args " + args) ; 
System.out.println("c1 " + c1) ; 
System.out.println("colectie " + colectie) ; 
System.out.println("om1 " + om1) ; 
System.out.println("p1 " + p1) ; 

enter image description here