Хранение более 1 элемента данных на узле Java LinkedList и отображение их в виде строки с помощью .toString () - PullRequest
0 голосов
/ 08 февраля 2011

Я занимаюсь программным проектом, который выглядит следующим образом:

Система, которая обрабатывает регистрацию студентов.При регистрации вы должны указать имя и фамилию, идентификационный номер, адрес, телефон, адрес электронной почты и код из 2 уроков, чтобы зарегистрироваться.Это должно быть сохранено в LinkedList.

Поскольку каждый узел в LinkedList может хранить ОДНУ данные, я решил пойти еще дальше.Используя этот ответ в качестве основы, я делаю изменение, вместо того, чтобы хранить данные 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 по умолчанию.Если вы хотите что-то красивое, вам придется переопределить метод toString () в вашем PaqueteDeDatos классе

Проблема в том, что я не могу использовать итератор для отображения содержимого всех узлов нав то же время, чтобы сделать переопределение .toString ().

Помогите мне с этим, пожалуйста, Мне нужно отобразить содержимое узлов связанного списка в виде строки, а не в виде хэша .

Пожалуйста, пожалуйста, объясните мне как можно проще, что мне нужно сделать, чтобы решить эту проблему, я не очень понимаю Java, я не могу купить книгу, чтобы понять ее, или пойти в публичную библиотеку, чтобы получить ее.У меня нет друзей, которые пишут в java, поэтому я не могу никого попросить о помощи, и мне нужно сделать это в течение следующих 24 часов.

И, пожалуйста, будьте конструктивны и добры.Мне не нужно, чтобы меня отшлепали, потому что я не следую соглашениям и не захожу на сайт java и не слежу за учебниками, прежде чем начинать кодировать в 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 ();
    }

}

Ответы [ 2 ]

3 голосов
/ 08 февраля 2011

Обычный способ сделать класс printable или toString () способным - это переопределить метод toString () класса. Самый простой способ сделать это - создать в IDE метод toString (). Все остальное, вероятно, будет сложнее.

Если вы не можете изменить код для добавления toString (), вы можете написать свой собственный метод для преобразования списка ваших объектов в строку, которая проверяет каждый элемент списка и преобразует его так, как вы хотите.

0 голосов
/ 08 февраля 2011

Ваш класс 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();
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...