我正在做一个这样的编程项目:
处理学生注册的系统。注册时,您必须提供姓名,身份证号码,地址,电话,电子邮件和2课程代码才能注册。这应该存储在LinkedList中。
因为LinkedList中的每个节点只能存储一个数据,所以我决定更进一步。使用this答案作为基础我做了一个更改,而不是为每个注册的学生在8个连续节点中存储每个学生8的8个学生数据,我创建了一个具有8个属性的对象,它存储了8个数据。注册每个学生,所以当你想要删除学生时,只需删除包含该对象的节点,而不是删除每个要删除的学生的8个连续节点。
当我在对象上添加学生数据然后在LinkedList节点上添加学生数据时,这个想法很有效,但是,当我需要在屏幕上显示所有学生时,技术都会失败。
理论上,通过使用迭代器方法.hasNext()和.Next(),列表将迭代并在屏幕上显示存储在节点中的对象的内容,它确实......但是在哈希而不是字符串中(我需要的)。因此,在屏幕上,而不是显示像
这样的东西Angel Pérez 15956228 7274205 skyx26@yahoo.com Caracas Carolina Rojas 13508200 6253241 caro_caro27@hotmail.com Maracaibo
我得到了
PaqueteDeDatos@158b649 PaqueteDeDatos@127734f
经过多次搜索后,我被告知(这里)因为
而发生打印“... @ ...”的东西,因为这是toString的默认版本。如果你想要漂亮的东西,你必须覆盖
PaqueteDeDatos
类中的toString()方法
问题是我无法使用迭代器同时显示所有节点的内容以覆盖.toString ()
。
请帮我这个,我需要将linkedList的节点内容显示为字符串而不是哈希。
请请尽可能简单地向我解释我需要做些什么才能解决这个问题,我不太懂Java,我不能买书来理解它,也不能去公共图书馆找一个。我没有用java编码的朋友,所以我不能向任何人寻求帮助,我需要在接下来的24小时内完成。
请建设性和善良。我真的不需要被打屁股,因为我不遵循惯例或去java站点并在开始编码之前遵循教程。事实上我知道这一切,但这是一个匆忙的情况,我盲目地试图通过这个课程,因为我的编程老师根本没有教我任何东西。
我正在使用下面的代码(仅限选项1,4和5作品):
import java.util.*;
class PaqueteDeDatos {
String Nombre;
String Apellido;
String Cedula;
String Direccion;
String Telefono;
String CorreoElectronico;
String Intensivo1;
String Intensivo2;
public PaqueteDeDatos(String a, String b, String c, String d, String e, String f, String g, String h) {
Nombre = a;
Apellido = b;
Cedula = c;
Direccion = d;
Telefono = e;
CorreoElectronico = f;
Intensivo1 = g;
Intensivo2 = h;
}
}
public class Proyecto{
public static void main(String[] args) {
System.out.println ("┌──────────────────────────────────────────────────────────────────┐");
System.out.println ("│ Manejo de listas dinamicas en Java │");
System.out.println ("├──────────────────────────────────────────────────────────────────┤");
System.out.println ("│Aplicacion que controla la informacion asociada a estudiante a inscribirse en un posible curso intensivo│");
System.out.println ("└──────────────────────────────────────────────────────────────────┘");
//Pausa();
LinkedList<PaqueteDeDatos> ListaDeAlumnos = new LinkedList<PaqueteDeDatos>();
while (true) {
for (int i=0; i<25; ++i) System.out.println();
MenuPrincipal();
Scanner CapturaDeDatos = new Scanner(System.in);
System.out.print ("Introduzca su opcion: ");
char Opcion = CapturaDeDatos.next().charAt(0);
if (Opcion !='1' && Opcion !='2' && Opcion !='3' && Opcion !='4' && Opcion !='5') {
System.out.println("Opcion invalida. Por favor introduzca nuevamente su eleccion...");
Pausa();
}
if (Opcion =='1') {
for (int i=0; i<25; ++i) System.out.println();
System.out.print ("Introduzca el nombre del alumno: ");
String Nombre = CapturaDeDatos.next();
System.out.println ();
System.out.print ("Introduzca el apellido del alumno: ");
String Apellido = CapturaDeDatos.next();
System.out.println ();
System.out.print ("Introduzca el numero de cedula del alumno: ");
String Cedula = CapturaDeDatos.next();
System.out.println ();
System.out.print ("Introduzca la direccion de habitacion del alumno: ");
String Direccion = CapturaDeDatos.next();
System.out.println ();
System.out.print ("Introduzca el telefono de contacto del alumno: ");
String Telefono = CapturaDeDatos.next();
System.out.println ();
System.out.print ("Introduzca el correo electronico del alumno: ");
String CorreoElectronico = CapturaDeDatos.next();
System.out.println ();
System.out.println ("A continuacion introduzca los intensivos a cursar por el alumno, basandose en la tabla superior.");
System.out.println ("Tenga en cuenta que solo se pueden inscribir MAXIMO 2 intensivos. Para evitar retrazos en el inicio");
System.out.println ("de los intensivos, procure que los intensivos escogidos por el alumno no choquen entre si");
System.out.println ("por tener los mismos horarios. Introduzca 00 (2 ceros) luego del primer intensivo, si el alumno solo");
System.out.println ("va a cursar un intensivo...");
System.out.println ();
System.out.print ("Introduzca el codigo del intensivo seleccionado por el alumno: ");
String Intensivo1 = CapturaDeDatos.next();
System.out.println ();
System.out.print ("Introduzca el codigo del intensivo seleccionado por el alumno: ");
String Intensivo2 = CapturaDeDatos.next();
System.out.println ();
PaqueteDeDatos Alumno = new PaqueteDeDatos (Nombre,Apellido,Cedula,Direccion,Telefono,CorreoElectronico,Intensivo1,Intensivo2);
ListaDeAlumnos.add(Alumno);
System.out.println ("Alumno inscrito exitosamente.");
System.out.println ("El sistema regresara al menu principal en 5 segundos...");
Pausa();
}
// if (Opcion =='2') {
//
// }
// if (Opcion =='3') EliminarAlumno();
if ((int) Opcion =='4') {
Iterator Iterador = ListaDeAlumnos.iterator();
while (Iterador.hasNext())
System.out.println (Iterador.next());
System.out.println ("Listado de alumnos mostrado exitosamente.");
System.out.println ("El sistema regresara al menu principal en 5 segundos...");
Pausa();
for (int i=0; i<25; ++i) System.out.println();
MenuPrincipal();
System.out.print ("Introduzca su opcion: ");
Opcion = CapturaDeDatos.next().charAt(0);
}
if (Opcion =='5') System.exit(0);
}
}
// Metodo para la pausa en pantalla
public static void Pausa() {
try {
Thread.sleep(5000);
}
catch (InterruptedException ex) {
}
}
// Metodo para el menu principal
public static void MenuPrincipal() {
System.out.println ("╔════════════════════╗");
System.out.println ("║ Menu Principal ║");
System.out.println ("╠════════════════════╣");
System.out.println ("║ ║");
System.out.println ("╠════════════════════╣");
System.out.println ("║ Inscribir Alumno (1) ║");
System.out.println ("╠════════════════════╣");
System.out.println ("║ Modificar Alumno (2) ║");
System.out.println ("╠════════════════════╣");
System.out.println ("║ Eliminar Alumno (3) ║");
System.out.println ("╠════════════════════╣");
System.out.println ("║ Mostrar Alumnos Inscritos (4) ║");
System.out.println ("╠════════════════════╣");
System.out.println ("║ Salir del sistema (5) ║");
System.out.println ("╚════════════════════╝");
System.out.println ();
}
}
答案 0 :(得分:3)
使类可打印或toString()能够正常的方法是覆盖类的toString()方法。最简单的方法是让IDE生成toString()方法。其他任何事情都可能更难。
如果您无法更改代码以添加toString(),您可以编写自己的方法将对象的List转换为String,该String检查列表中的每个元素并根据需要进行转换。
答案 1 :(得分:0)
您的PaqueteDeDatos类应覆盖toString方法,以便打印所需的字符串而不是打印hashCode。
class PaqueteDeDatos
{
String Nombre;
String Apellido;
String Cedula;
String Direccion;
String Telefono;
String CorreoElectronico;
String Intensivo1;
String Intensivo2;
public PaqueteDeDatos(String a, String b, String c, String d, String e, String f, String g, String h)
{
Nombre = a;
Apellido = b;
Cedula = c;
Direccion = d;
Telefono = e;
CorreoElectronico = f;
Intensivo1 = g;
Intensivo2 = h;
}
public String toString()
{
StringBuilder sb = new StringBuilder();
sb.append(Nombre).append(" ")
.append(Apellido).append(" ")
.append(Cedula).append(" ")
.append(Direccion).append(" ")
.append(Telefono).append(" ")
.append(CorreoElectronico).append(" ")
.append(Intensivo1).append(" ")
.append(Intensivo2).append(" ");
return sb.toString();
}
}