2012-10-21 5 views
9

가능한 복제를 모든 개체를 인쇄 :
How to print object content in correct way?배열 목록에

내 배열 목록에서 학생 객체에서 (모든 변수)를 인쇄 할 수 있어야합니다

. 이것이 가능한가? 인쇄하려고 할 때 이런 종류의 결과를 출력합니다 (예 : [email protected]). 나는 hexadecimal 또는 뭔가

생각이 내 코드입니다 : 당신은 당신의 Student 클래스 public String toString() 방법을 정의 할 필요가

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

에서 [태그 : 과제] 태그 depricated된다. –

답변

11

무시 아래 Student 클래스 toString()있어서

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

. 예를 들어 :

당신이 클래스의 인스턴스를 인쇄 할 때마다
public String toString() { 
    return "Student: " + studentName + ", " + studentNo; 
} 
+1

이클립스를 사용하는 경우 Source -> generate toString()을 클릭하면 자동으로 수행 할 수 있습니다. – amit

+0

어리석은 일 이겠지만 (미안하지만 여전히 배울 것입니다.) 그 방법을 정의하여이 방법을 통해 arraylist에 액세스 할 수 있습니다. – joe

+0

net beans 사용 – joe

13

, Object 클래스의 defaulttoString 구현은 당신이 점점 표현을 반환합니다,라고합니다. >

  • student.StudentType이며,
  • 82701e - 당신은 출력으로 얻을 에서 Type하고 그래서 Hashcode

    , [email protected] - : 그것은 두 부분으로을 포함 the HashCode

그럼, y

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

그래서, 당신의 main 클래스에서, 당신이 당신의 ArrayList, 그것은 각 인스턴스에 대한 toString 메소드를 호출하여 인쇄하면 그 overrided - : OU는 Student 클래스의 toString 방법은 String representation을 요구 얻을 재정의해야 호출됩니다 모두 위의 경우

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 
} 

, Student 클래스에서 오버라이드 toString 방법 appropri - : 오히려 Object 클래스보다 각 인스턴스의 표현이 인쇄됩니다.

관련 문제