在java中打印出多个对象的属性

时间:2012-06-24 19:28:00

标签: java arrays loops tostring

我创建了一个person类,其中包含属性age和name。我在对象数组中创建了5个类的实例,并希望使用for循环打印属性。我的理解是,当您尝试打印出一个对象时,toString被显式调用,因此我覆盖toString,以便在调用该对象时打印出该对象的两个属性。

这是我的代码:

class Person
{
    int age;
    String name;

    public Person(String name, int age)
    {
        this.age = age;
        this.name = name;
    }


    public String toString(Person p)
    {
        return "Name: " + p.name +"Age: "+ p.age;
    }
}


public class P1Q5Bubble {

public static void main(String[] args) {

        Person [] pp = new Person [5];

        pp[0] = new Person("Andy" , 18);
        pp[1] = new Person("Lisa" , 20);
        pp[2] = new Person("Bob" , 10);
        pp[3] = new Person("Eva" , 18);
        pp[4] = new Person("Tim" , 13);       




        for(int i = 0; i> pp.length ; i++)
            System.out.println(pp[i]);
}

4 个答案:

答案 0 :(得分:4)

你需要改变两件事

1)用于i > pp.lengthi < pp.length

2} toString()System.out.print中使用的System.out.println方法没有参数,因此将其更改为

public String toString() {
    return "Name: " + name + "Age: " + age;
}

答案 1 :(得分:3)

您的for循环终止条件不正确,您需要i < pp.length

使用i > pp.length循环将不执行任何语句。只有终止条件为true时,循环才会执行。

此外,您未正确覆盖toString:您的toString方法不应采用任何参数:您的实例变量nameage将可用于该函数

答案 2 :(得分:1)

您需要在Person类中重写的toString()函数不应包含任何参数(因为定义它的Object类不包含参数)。该功能的更正代码为

@Override public String toString()
{
   return return "Name: " + name +"Age: "+ age;
}

答案 3 :(得分:0)

您应该覆盖默认的toString()(不带参数),而是添加了一个新方法。因此,删除该参数并使用“this”代替person参数