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

Java 替代数组元素打印的哈希代码,java,arrays,hash,Java,Arrays,Hash,我用一个名为Student的新类创建了一个程序,该类设置并获取不同的变量,如name、GPA、是否注册以及注册时间(这是一个字符串,它的目的是)。问题是,当我尝试将信息存储到数组和/或数组列表中并打印它时,会打印哈希代码而不是信息。该程序还没有完全完成,但我试图首先解决哈希代码问题。如果你能帮忙,我将不胜感激。提前谢谢你 Student st = new Student(); System.out.println(st.getName()); Student1();

我用一个名为Student的新类创建了一个程序,该类设置并获取不同的变量,如name、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 <Student> strList = new ArrayList<Student>();
    Student student[] = new Student[5];
    newStudent.getName();
    student[i] = newStudent;

    strList.add(newStudent);
    System.out.println(student[i]);
}

  • 如果需要对象的字符串表示,则此对象必须实现
    toString()
    。如果您不知道,JVM中的默认设置是打印哈希代码
  • 如果要打印对象的特定字段,则应在必要时通过方法显式打印该字段;比如
    System.out.println(学生[i].getName())
  • 如果要打印整个数组,应使用
    Arrays.toString()

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

    Student student[] = new Student[5];
    newStudent.getName();
    student[i] = newStudent;
    
    strList.add(newStudent);
    System.out.println(student[i]);
    
    在这里,当您打印时,您不是打印学生姓名,而是打印对象本身。无论何时对对象执行System.out.println操作,都会返回哈希代码


    这是您的问题吗?

    这种打印将获得实例地址,而不是它的打印

    因为您想要打印引用类型,所以VM不知道您希望如何显示它,或者其他一些字段是否不可打印


    它很适合您,重写“public String toString()”方法并实现您自己的格式。

    请重写toString()方法,因为当前它仅打印对象类中toString()方法的默认实现,该对象类设置为当前对象的hashcode()。

    请尝试正确格式化您的代码。它一点也不可读。+你应该接受一个答案……我为耽搁太久而道歉,我被叫去上班,午夜后才回家。但是你的建议解决了,谢谢你,先生或女士。你为我节省了不少时间。别担心,几个月后我的答案被接受了:)是的,谢谢!
    Student student[] = new Student[5];
    newStudent.getName();
    student[i] = newStudent;
    
    strList.add(newStudent);
    System.out.println(student[i]);