打印的哈希代码代替数组元素

我创建了一个程序,其中包含一个名为Student的新类,它设置并获取不同的变量,如名称,GPA,如果它们已注册以及何时注册(这是一个字符串,它的目的是)。 问题是,当我尝试将信息存储到数组和/或数组列表中并打印它时,我得到打印的哈希码而不是信息。 该程序并不完全,但我试图首先解决哈希码问题。 如果你能提供帮助我会非常感激。 先感谢您!

Student st = new Student(); System.out.println(st.getName()); Student1(); Student st1 = new Student("John"); } public static void Student1() { System.out.println("Enter the data for student 1 :"); Student st = new Student(); Scanner keyboard = new Scanner(System.in); String name = keyboard.next(); double GPA = keyboard.nextDouble(); boolean enrolled = keyboard.nextBoolean(); String date = keyboard.next(); for (int i =0; i<5; i++){ Student newStudent = new Student(); newStudent.setName(name); newStudent.setGPA(GPA); newStudent.setEnrolled(enrolled); newStudent.setDate(date); ArrayList  strList = new ArrayList(); Student student[] = new Student[5]; newStudent.getName(); student[i] = newStudent; strList.add(newStudent); System.out.println(student[i]); 

}

学生class

公立class学生{

 private String name; private double gpa; private boolean enrolled; private String enrollDate; public Student() { this.name = ""; this.gpa = 0.0; this.enrolled = false; this.enrollDate = "none"; } public Student(String name1) { this.name = name1; this.gpa = 0.0; this.enrolled = false; this.enrollDate = "none"; } public void setName(String name) { this.name = name; } public String getName() { return this.name; } public void setGPA(double gpa) { this.gpa = gpa; } public double getGPA() { return this.gpa; } public void setEnrolled(boolean enrolled) { this.enrolled = enrolled; } public boolean getEnrolled() { return this.enrolled; } public void setDate(String date) { } 

}

  1. 如果需要对象的String表示,则此对象必须实现toString() 。 如果不这样做,JVM中的默认值是打印哈希码。
  2. 如果要打印对象的特定字段,则应根据需要通过方法显式打印该字段; 像System.out.println(student[i].getName());
  3. 如果您尝试打印整个数组,则应使用Arrays.toString()

这是因为您将学生对象放入数组中:

 Student student[] = new Student[5]; newStudent.getName(); student[i] = newStudent; strList.add(newStudent); System.out.println(student[i]); 

在打印时,您不打印学生姓名,而是打印对象本身。 每当您对对象执行System.out.println时,都会返回哈希码。

这是你的问题吗?

请覆盖toString()方法,因为它目前只打印Object类中的toString()方法的默认实现,该方法设置为当前对象的hashcode()。

这种打印将获取实例地址而不是它的打印。

由于您要打印引用类型,因此VM不知道您希望它如何显示,或者某些字段不打印。

它很适合你,覆盖“public String toString()”方法并实现你自己的格式。