打印Java对象数组

时间:2013-12-15 17:32:28

标签: java arrays printing

我有一个程序类和一个学生类,学生构造函数创建一个学生并将其存储在数组中,问题是当我尝试打印数组时,我得到以下内容:

metClassTwo.Student@5c74c3aa

如何让程序正确打印阵列详细信息?

打印方法:

  public static void listStudent() {
    for (int i = 0;i < myClassCount;i++) {
      if (myClass[i] != null) {
        System.out.println(myClass[i]);
      }
    }
  }
每次添加学生时,

myClassCount都会加1。

阵列:

  static final Student[] myClass = new Student[6];

6 个答案:

答案 0 :(得分:2)

为Student类实现toString()方法。 例如:

public String toString() {
    return this.name+" "+this.surname;
}

答案 1 :(得分:1)

class Student {
  String name;
  @Override
  public String toString(){ return name;}
}

myClassCount不保证索引边界,使用数组长度来检查数组的边界。

for (int i = 0; i < myClass.length; i++) {
  if (myClass[i] != null) {
    System.out.println(myClass[i]);
  } 
}  

或更好地使用foreach循环

for (Student s : myClass) {
  if (s != null) {
    System.out.println(s);
  } 
}  

答案 2 :(得分:1)

您必须覆盖Student类的toString()方法。当你说“打印学生对象”时,Java不知道你期望的输出,所以它只是继承toString()类的Object方法,它只是类的名称和当前实例的哈希码

尝试这样的事情(并使用你想要打印的学生对象上的任何变量。

class Student {
   public String toString() {
       return String.format("%s, %s\n", this.studentName, this.studentAge);
   }
   ...
}

答案 3 :(得分:0)

您需要覆盖您的Student类toString()方法:

@Override 
public String toString() {
  return this.getFirstName() + " " + this.getLastName();
}

我不知道你的学生班级是什么样的,但这应该给你一个大致的想法。 如果您无法修改Student类,您可以在println方法中执行相同的操作:

 for (int i = 0;i < myClassCount;i++) {
      if (myClass[i] != null) {
        System.out.println(myClass[i].getFirstName() + " etc...");
      }
}

答案 4 :(得分:0)

方法Arrays.toString将很好地打印出Array的所有元素。

您还需要实现学生对象的toString方法,以便学生自己能够很好地显示。

大多数IDE都有自动生成toString方法的实用程序。对于Netbeans,请查看源菜单 - &gt;生成 - &gt;的toString。

答案 5 :(得分:-1)

您必须覆盖Students类中的toString方法。

e.g:

@Override 
public String toString() {

StringBuilder result = new StringBuilder();

result.append(something);
.....
return result.toString();
}