2012-10-21 36 views
9

thể trùng lặp:
How to print object content in correct way?in ra tất cả các đối tượng trong danh sách mảng

tôi cần để có thể in ra các đối tượng học sinh (tất cả các biến) trong danh sách mảng của tôi. Điều này có thể không? Khi tôi cố gắng in, nó sẽ xuất ra loại điều này, ví dụ: [email protected]. Tôi nghĩ đó là hexadecimal hay cái gì

Đây là mã của tôi:

package student; 

public class Student { 

    private String studentName; 
    private String studentNo; 
    private String email; 
    private int year; 


    public Student() { 
     this.studentName = null; 
     this.studentNo = null; 
     this.email = null; 
     this.year = -1; 
    } 

    public Student(String nName, String nNum, String nEmail, int nYr) { 
     this.studentName = nName; 
     this.studentNo = nNum; 
     this.email = nEmail; 
     this.year = nYr; 
    } 

    public void setStudentName(String newStudentName) { 
     this.studentName = newStudentName; 
    } 

    public void setStudentNo(String newStudentNo) { 
     this.studentNo = newStudentNo; 
    } 

    public void setEmail(String newEmail) { 
     this.email = newEmail; 
    } 

    public void setYear(int newYear) { 
     this.year = newYear; 
    } 

    public String getStudentName() { 
     return studentName; 
    } 

    public String getStudentNo() { 
     return studentNo; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public int getYear() { 
     return year; 
    } 
} 

package student; 

import java.util.ArrayList; 
import java.util.List; 
import java.util.Scanner; 

public class studentTest { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 



     List<Student> Students = new ArrayList(); 


     Student student1 = new Student(); 

     student1.setStudentName("Bob Marley"); 
     student1.setStudentNo("N0002"); 
     student1.setEmail("[email protected]"); 
     student1.setYear(2); 

     Students.add(student1); 

     Student student2 = new Student(); 

     student2.setStudentName("Bill Harvey"); 
     student2.setStudentNo("N0003"); 
     student2.setEmail("[email protected]"); 
     student2.setYear(2); 

     Students.add(student2); 

     Student student3 = new Student(); 

     student3.setStudentName("John Beans"); 
     student3.setStudentNo("N0004"); 
     student3.setEmail("[email protected]"); 
     student3.setYear(2); 

     Students.add(student3); 


     System.out.println("Add new students: "); 
     System.out.println("Enter number of students to add: "); 
     int countStudents = input.nextInt(); 

     for (int i = 0; i < countStudents; i++) { 
      Student newStudents = new Student(); 


      System.out.println("Enter details for student: " + (i + 1)); 

      System.out.println("Enter name: "); 
      newStudents.setStudentName(input.next()); 

      System.out.println("Enter Number: "); 
      newStudents.setStudentNo(input.next());System.out.println("Search by student number: "); 



      System.out.println("Enter email: "); 
      newStudents.setEmail(input.next()); 

      System.out.println("Enter year: "); 
      newStudents.setYear(input.nextInt()); 
      Students.add(newStudents); 
     } 


    } 
} 
+1

Các [tag: bài tập về nhà] thẻ được depricated. –

Trả lời

11

Override toString() phương pháp trong Student lớp như sau:

@Override 
    public String toString() { 
     return ("StudentName:"+this.getStudentName()+ 
        " Student No: "+ this.getStudentNo() + 
        " Email: "+ this.getEmail() + 
        " Year : " + this.getYear()); 
    } 
4

Bạn phải xác định public String toString() phương thức trong lớp Student của bạn. Ví dụ:

public String toString() { 
    return "Student: " + studentName + ", " + studentNo; 
} 
+1

Nếu bạn đang sử dụng nhật thực, bạn có thể tự động thực hiện bằng cách nhấp vào Source -> create toString() – amit

+0

Điều này nghe có vẻ ngớ ngẩn (xin lỗi tôi vẫn đang học) nhưng nếu tôi xác định phương pháp đó làm cách nào để truy cập danh sách mảng từ đó. – joe

+0

sử dụng hạt thuần – joe

13

Bất cứ khi nào bạn in bất kỳ trường hợp lớp học của bạn, việc thực hiện defaulttoString của Object lớp được gọi, mà trả về cam kết rằng bạn đang nhận được. Nó chứa hai phần: - TypeHashcode

Vì vậy, trong [email protected] mà bạn nhận được khi đầu ra ->

  • student.StudentType, và
  • 82701e là số HashCode

Vì vậy, y ou cần phải ghi đè một phương pháp toString trong lớp Student bạn để yêu cầu String representation: -

@Override 
public String toString() { 
    return "Student No: " + this.getStudentNo() + 
      ", Student Name: " + this.getStudentName(); 
} 

Vì vậy, khi từ lớp main của bạn, bạn in của bạn ArrayList, nó sẽ gọi phương thức toString cho mỗi trường hợp, mà bạn overrided chứ không phải là một trong Object lớp: -

List<Student> students = new ArrayList(); 

// You can directly print your ArrayList 
System.out.println(students); 

// Or, iterate through it to print each instance 
for(Student student: students) { 
    System.out.println(student); // Will invoke overrided `toString()` method 
} 

trong cả hai trường hợp trên, các phương pháp toString overrided trong Student lớp sẽ được gọi và appropri ATE đại diện của mỗi trường hợp sẽ được in.

Các vấn đề liên quan