2012-10-21 4 views
9

に可能性の重複をプリントアウト:
How to print object content in correct way?は、配列リスト内のすべてのオブジェクト

私は配列リストにStudentオブジェクト(すべての変数)をプリントアウトできるようにする必要があります。これは可能ですか?印刷しようとすると、この種のもの、例えば[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

[タグ:宿題]タグは廃止予定されています。 –

答えて

11

オーバーライドとして以下StudentクラスのtoString()方法

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

。たとえば:あなたはあなたのクラスの任意のインスタンスを印刷するたびに、ObjectクラスのdefaulttoString実装は、あなたが取得している表現を返し、

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

eclipseを使用している場合は、Source - > generate toString()をクリックして自動的に行うことができます。 – amit

+0

これは愚かなことかもしれませんが残念です。 – joe

+0

net beansを使う – joe

13

と呼ばれています。 >

  • student.StudentTypeあり、そして
  • 82701eです - あなたが出力として得るTypeのでHashcode

    [email protected] - : それは二つの部分が含まれていますHashCode

したがって、y OUはString representation必要得るためにあなたのStudentクラスのtoStringメソッドをオーバーライドする必要があります - だから、

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

を、あなたのmainクラスから、あなたのArrayListを印刷するとき、それはあなたのことを、各インスタンスにtoStringメソッドを呼び出しますoverrided呼び出される上記の両方の場合において

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クラス内の1つ以上各インスタンスの表現が印刷されます。

関連する問題