2014-03-25 41 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