【问题标题】:printing out attributes of multiple objects in java在java中打印出多个对象的属性
【发布时间】:2012-06-24 19:27:59
【问题描述】:

我创建了一个人员类,具有年龄和姓名属性。我还在一个对象数组中创建了该类的 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]);
}

【问题讨论】:

  • 你的问题到底是什么?

标签: java arrays loops tostring


【解决方案1】:

你需要改变两件事

1) 在i > pp.lengthi < pp.length

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        您应该覆盖默认 toString() (不带参数),而不是添加一个新方法。所以删除那个论点并使用'this'代替人论点

        【讨论】:

          猜你喜欢
          • 2015-11-28
          • 2020-01-02
          • 1970-01-01
          • 2016-02-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多