java - metodos - Imprimir todos los objetos en la lista de arreglos
listas en java netbeans (3)
Debes definir public String toString()
método public String toString()
en tu clase de Student
. Por ejemplo:
public String toString() {
return "Student: " + studentName + ", " + studentNo;
}
Esta pregunta ya tiene una respuesta aquí:
Posible duplicado:
Cómo imprimir el contenido del objeto de manera correcta?
Necesito poder imprimir los objetos de Estudiante (todas las variables) en mi lista de arreglo. es posible? Cuando intento imprimir me sale este tipo de cosas, por ejemplo student.Student@82701e
. Creo que es hexadecimal
o algo
Este es mi código:
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);
}
}
}
Reemplazar el método toString()
en Student
clase de Student
la siguiente manera:
@Override
public String toString() {
return ("StudentName:"+this.getStudentName()+
" Student No: "+ this.getStudentNo() +
" Email: "+ this.getEmail() +
" Year : " + this.getYear());
}
Siempre que imprima cualquier instancia de su clase, se llama a la implementación default
de la clase Object
, que devuelve la representación que está obteniendo. Contiene dos partes : - Type
y Hashcode
Entonces, en student.Student@82701e que obtienes como salida ->
-
student.Student
es elType
, y -
82701e
es elHashCode
Por lo tanto, debe sobrescribir un método toString
en su clase de Student
para obtener String representation
requerida:
@Override
public String toString() {
return "Student No: " + this.getStudentNo() +
", Student Name: " + this.getStudentName();
}
Entonces, cuando desde su clase main
, imprima su ArrayList
, invocará el método toString
para cada instancia, que overrided
lugar de la clase de Object
: -
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
}
En los dos casos anteriores, se invocará el método toString
anulado en Student
clase Student
y se imprimirá la representación adecuada de cada instancia.