Java - Impresion Lista muestra caracteres especiales

 
Vista:
sin imagen de perfil
Val: 33
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Impresion Lista muestra caracteres especiales

Publicado por Dany (16 intervenciones) el 27/11/2018 17:48:20
Hola a todos.

Estoy viendo el temas de listas en JAVA y tengo un problema para mostrar la lista de elementos.

Tengo lo siguiente un MENU de Opciones en el cual por medio de metodos:
Agrego elementos a la lista
Elimino elementos a la lista
Inserto al Inicio
Inserto al Final
Muestros los elementos

Aqui tengo el problema cuando ingreso elelentos y trato de mostrar los elementos me muestra solo caracteres especiales no se que pueda estar pasando.

Pueden hecharle un ojo a el codigo y ver que es lo que tengo mal por favor.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
/*Clase NODO*/
 
package asesorialistas;
/*@author Daniel Solis*/
public class Nodo{
 
public int Dato;
public Nodo Sig;//Puntero Enlcae recursivo
//Enlaza los diferentes nodos
 
 
//Constructor inicializar nodos
public Nodo(int d){
//Para crear un nodo final
this.Dato=d;
}
//Constructor para insertar al inicio
public Nodo(int d, Nodo n){
this.Dato=d;
this.Sig=n;
    }
}
 
/*METODOS LISTA*/
package asesorialistas;
/*@author Daniel Solis*/
public class Lista {
//Creando punteros
protected Nodo Inicio, Fin; //Punteros para saber donde inica y donde termina
//Donde esta el Inicio y Fin
public Lista(){
Inicio=null;
Fin=null;
    }
/*----------------------------------------------------------------------------*/
//Metodo para agregar al incio de la lista
public void AgregarInicio(int Elemento){
//Creando el nodo
Inicio = new Nodo(Elemento,Inicio);//Creando el Nodo
if(Fin==null){
    Fin=Inicio;
}
    }
/*----------------------------------------------------------------------------*/
//Metodo para agregar al final
public void AgrearFin(int Elemento){
    if (!vacia()) {
      Fin.Sig=new Nodo(Elemento);
      Fin=Fin.Sig;
    }else{
        Inicio=Fin=new Nodo(Elemento);
    }
}
/*----------------------------------------------------------------------------*/
//Metodo para mostrar la lista
public void Mostrar(){
Nodo recorrer=Inicio;
while (recorrer!=null){
    System.out.print("["+recorrer+"]");
    recorrer=recorrer.Sig;
    }
}
/*----------------------------------------------------------------------------*/
//Metodo esta la lista Vacia
public boolean EstaVacia() {
    if (Inicio==null) {
    return true;
    }else{
        return false;
    }
}
/*----------------------------------------------------------------------------*/
public void BorrarInicio(int Elemento){
        //creando el nodo
        Elemento = Inicio.Dato;//creando el nodo
        if(Inicio==null){
            Fin = Inicio = null;
        }
        else{
            Nodo temporal = Inicio;
            while(temporal.Sig != Inicio){
                temporal = temporal.Sig;
            }
            Inicio = temporal;
            Inicio.Sig = null;
        }
}
/*----------------------------------------------------------------------------*/
public int BorrarFinal(){
        int Elemento = Fin.Dato;
        if(Inicio==Fin){
            Inicio = Fin = null;
        }else{
            Nodo temporal = Inicio;
            while(temporal.Sig != Fin){
                temporal = temporal.Sig;
            }
            Fin = temporal;
            Fin.Sig = null;
        }
        return Elemento;
}
/*----------------------------------------------------------------------------*/
public boolean BuscarElemento(int Elemento){
            Nodo temporal =Inicio;
 
            while(temporal !=null && temporal.Dato != Elemento){
                temporal = temporal.Sig;
            }
           return temporal;
        }
}
 
/*Clase PRINCIPAL*/
 
package asesorialistas;
import java.awt.HeadlessException;
import javax.swing.JOptionPane;
/*@author Dany*/
public class Principal {
    public static void main(String[] args) {
        //crear instancias de las clases
        Lista Listita = new Lista();
        //menu do while
        int opcion = 0;
        int Elemento; //valor a la lista (para insertar)
 
        do {
            try {
                opcion = Integer.parseInt(JOptionPane.showInputDialog(null, "***  MENU DE OPCIONES  ***\n"
                        + "1.- Agregar un Elemento al Inicio \n"
                        + "2.- Agregar un Elemento al Final \n"
                        + "3.- Mostrar los Elementos de las listas \n"
                        + "4.- Checar si la lista esta vacia \n"
                        + "5.- Borrar Elemento al inicio \n"
                        + "6.- Borrar Elemento al final \n"
                        + "7.- Buscar Elemento \n"
                        + "8.- Salir \n"));
 
                switch(opcion){
 
                    case 1:
                        try {
                            Elemento = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa el Elemento "
                                    + "al inicio"));
                            Listita.AgregarInicio(Elemento);
                        } catch (NumberFormatException e) {
                            JOptionPane.showMessageDialog(null,"Error"+e.getMessage());
                        }
                        break;
 
                    case 2:
                                                try {
                           Elemento = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa el Elemento "
                                    + "al final"));
                            Listita.AgrearFin(Elemento);
                        } catch (NumberFormatException e) {
                            JOptionPane.showMessageDialog(null,"Error"+e.getMessage());
                        }
                        break;
 
                    case 3:
                        Listita.Mostrar();
                        System.out.print("");
                        break;
 
                    case 4:
                        Listita.EstaVacia();
                        break;
 
                    case 5:
                        try {
                            Elemento = Listita.BorrarInicio();
                            JOptionPane.showInputDialog(null, "El Elemento eliminado es: "
                                    +Elemento,"Eliminando nodo de inicio",
                                    JOptionPane.INFORMATION_MESSAGE);
 
                        } catch (NumberFormatException e) {
                            JOptionPane.showMessageDialog(null,"Error"+e.getMessage());
                        }
                        break;
 
                     case 6:
                        try {
                            Elemento = Listita.BorrarFinal();
                            JOptionPane.showInputDialog(null, "El Elemento eliminado es: "
                                    +Elemento,"Eliminando nodo de fin",
                                    JOptionPane.INFORMATION_MESSAGE);
 
                        } catch (NumberFormatException e) {
                            JOptionPane.showMessageDialog(null,"Error"+e.getMessage());
                        }
                        break;
 
                        case 7:
                            Elemento=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingresa el "+" elemento a buscar...","Buscando nodos en la lista",
                                    JOptionPane.INFORMATION_MESSAGE));
                            JOptionPane.showInputDialog(null, "El Elemento eliminado es: "
                                    +Elemento,"Eliminando nodo de fin",
                                    JOptionPane.INFORMATION_MESSAGE);
 
                            if (Listita.BuscarElemento(Elemento)==true) {
                                JOptionPane.showMessageDialog(null, "El elemento" + Elemento + " si esta en la lista",
                                        "nodo encontrado",JOptionPane.INFORMATION_MESSAGE);
                            }else{JOptionPane.showMessageDialog(null, "El elemento" + Elemento + " no esta en la lista",
                                        "no no encintrado",JOptionPane.INFORMATION_MESSAGE);
                            }
                        break;
                }
            } catch (HeadlessException | NumberFormatException e) {
                JOptionPane.showMessageDialog(null,"Error"+ e.getMessage());
            }
        } while (opcion != 8);
 
    }
}


Espero me puedan ayudar de favor.

Saludos

DS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Impresion Lista muestra caracteres especiales

Publicado por Billy Joel (875 intervenciones) el 27/11/2018 19:15:55
Modifiqué un poco la clase Lista

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
public class Lista {
 
    /**
     * Creando punteros
     */
    protected Nodo Inicio, Fin; //Punteros para saber donde inica y donde termina
 
    /**
     * Donde esta el Inicio y Fin
     */
    public Lista() {
        Inicio = null;
        Fin = null;
    }
 
    /*----------------------------------------------------------------------------*/
    /**
     * Metodo para agregar al incio de la lista
     *
     * @param Elemento
     */
    public void AgregarInicio(int Elemento) {
//Creando el nodo
        Inicio = new Nodo(Elemento, Inicio);//Creando el Nodo
        if (Fin == null) {
            Fin = Inicio;
        }
    }
 
    /*----------------------------------------------------------------------------*/
    /**
     * Metodo para agregar al final
     *
     * @param Elemento
     */
    public void AgrearFin(int Elemento) {
//        if (!vacia()) {
        if (!EstaVacia()) {
            Fin.Sig = new Nodo(Elemento);
            Fin = Fin.Sig;
        } else {
            Inicio = Fin = new Nodo(Elemento);
        }
    }
 
    /*----------------------------------------------------------------------------*/
    /**
     * Metodo para mostrar la lista
     */
    public void Mostrar() {
        Nodo recorrer = Inicio;
        while (recorrer != null) {
            System.out.print("[" + recorrer + "]");
            recorrer = recorrer.Sig;
        }
    }
 
    /*----------------------------------------------------------------------------*/
    /**
     * Metodo esta la lista Vacia
     *
     * @return
     */
    public boolean EstaVacia() {
        return Inicio == null;
    }
 
    /*----------------------------------------------------------------------------*/
    public void BorrarInicio(int Elemento) {
        //creando el nodo
        Elemento = Inicio.Dato;//creando el nodo
        if (Inicio == null) {
            Fin = Inicio = null;
        } else {
            Nodo temporal = Inicio;
            while (temporal.Sig != Inicio) {
                temporal = temporal.Sig;
            }
            Inicio = temporal;
            Inicio.Sig = null;
        }
    }
 
    /**
     * Elimina el nodo del inicio y retorna el elemento eliminado
     * @return 
     */
    public Integer borrarInicio(){
        Integer elemento = null;
        if (Inicio == null) {
            Fin = Inicio = null;
        } else {
            elemento = Inicio.Dato;
            Inicio = Inicio.Sig;
        }
        return elemento;
    }
 
    /*----------------------------------------------------------------------------*/
    public int BorrarFinal() {
        int Elemento = Fin.Dato;
        if (Inicio == Fin) {
            Inicio = Fin = null;
        } else {
            Nodo temporal = Inicio;
            while (temporal.Sig != Fin) {
                temporal = temporal.Sig;
            }
            Fin = temporal;
            Fin.Sig = null;
        }
        return Elemento;
    }
 
    /*----------------------------------------------------------------------------*/
    public Nodo BuscarElemento(int Elemento) {
        Nodo temporal = Inicio;
        while (temporal != null && temporal.Dato != Elemento) {
            temporal = temporal.Sig;
        }
        return temporal;
    }
 
    /**
     * Evalua si el elemento dado está dentro de la lista
     * @param elemento
     * @return 
     */
    public boolean isElementoIn(int elemento){
        boolean is = false;
        Nodo temporal = Inicio;
        while(temporal != null){
            if(temporal.Dato == elemento){
                is = true;
                break;
            } else {
                temporal = temporal.Sig;
            }
        }
        return is;
    }
}

La clase principal también tiene unos cambios minimos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import java.awt.HeadlessException;
import javax.swing.JOptionPane;
 
public class Principal {
 
    public static void main(String[] args) {
 
        //crear instancias de las clases
        Lista Listita = new Lista();
 
        //menu do while
        int opcion = 0;
        int Elemento; //valor a la lista (para insertar)
        do {
            try {
                opcion = Integer.parseInt(JOptionPane.showInputDialog(null, "***  MENU DE OPCIONES  ***\n"
                        + "1.- Agregar un Elemento al Inicio \n"
                        + "2.- Agregar un Elemento al Final \n"
                        + "3.- Mostrar los Elementos de las listas \n"
                        + "4.- Checar si la lista esta vacia \n"
                        + "5.- Borrar Elemento al inicio \n"
                        + "6.- Borrar Elemento al final \n"
                        + "7.- Buscar Elemento \n"
                        + "8.- Salir \n"));
                switch (opcion) {
                    case 1:
                        try {
                            Elemento = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa el Elemento "
                                    + "al inicio"));
                            Listita.AgregarInicio(Elemento);
                        } catch (NumberFormatException e) {
                            JOptionPane.showMessageDialog(null, "Error" + e.getMessage());
                        }
                        break;
                    case 2:
                        try {
                            Elemento = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa el Elemento "
                                    + "al final"));
                            Listita.AgrearFin(Elemento);
                        } catch (NumberFormatException e) {
                            JOptionPane.showMessageDialog(null, "Error" + e.getMessage());
                        }
                        break;
                    case 3:
                        Listita.Mostrar();
                        System.out.print("");
                        break;
                    case 4:
                        Listita.EstaVacia();
                        break;
                    case 5:
                        try {
//                            Elemento = Listita.BorrarInicio();
                            Elemento = Listita.borrarInicio();
                            JOptionPane.showInputDialog(null, "El Elemento eliminado es: "
                                    + Elemento, "Eliminando nodo de inicio",
                                    JOptionPane.INFORMATION_MESSAGE);
                        } catch (NumberFormatException e) {
                            JOptionPane.showMessageDialog(null, "Error" + e.getMessage());
                        }
                        break;
                    case 6:
                        try {
                            Elemento = Listita.BorrarFinal();
                            JOptionPane.showInputDialog(null, "El Elemento eliminado es: "
                                    + Elemento, "Eliminando nodo de fin",
                                    JOptionPane.INFORMATION_MESSAGE);
                        } catch (NumberFormatException e) {
                            JOptionPane.showMessageDialog(null, "Error" + e.getMessage());
                        }
                        break;
                    case 7:
                        Elemento = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa el " + " elemento a buscar...", "Buscando nodos en la lista",
                                JOptionPane.INFORMATION_MESSAGE));
                        JOptionPane.showInputDialog(null, "El Elemento eliminado es: "
                                + Elemento, "Eliminando nodo de fin",
                                JOptionPane.INFORMATION_MESSAGE);
//                        if (Listita.BuscarElemento(Elemento) == true) {
                        if (Listita.isElementoIn(Elemento) == true) {
                           JOptionPane.showMessageDialog(null, "El elemento" + Elemento + " si esta en la lista",
                                    "nodo encontrado", JOptionPane.INFORMATION_MESSAGE);
                        } else {
                           JOptionPane.showMessageDialog(null, "El elemento" + Elemento + " no esta en la lista",
                                    "no no encintrado", JOptionPane.INFORMATION_MESSAGE);
                        }
                        break;
                }
            } catch (HeadlessException | NumberFormatException e) {
                JOptionPane.showMessageDialog(null, "Error" + e.getMessage());
            }
        } while (opcion != 8);
    }
}

La clase Nodo no tiene cambios.

PD: Los nombres de las variables deben ir en minusculas y los nombres de las clases en mayusculas. Si no lo haces así confunde
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 33
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Impresion Lista muestra caracteres especiales

Publicado por Dany (16 intervenciones) el 27/11/2018 23:37:02
Gracias por la ayuda.

Seguia mostrandome caracteres especiales y no la lista de elementos, corregi esto y asunto arreglado:

1
2
3
4
5
6
7
8
9
10
11
/*----------------------------------------------------------------------------*/
/**
 * Metodo para mostrar la lista
 */
public void Mostrar() {
    Nodo recorrer = Inicio;
    while (recorrer != null) {
        System.out.print("[" + recorrer,Dato + "]");
        recorrer = recorrer.Sig;
    }
}

Gracias por tus apuntes y observaciones.

Pueden cerrar el hilo.

Saludos

DS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 33
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Impresion Lista muestra caracteres especiales

Publicado por Dany (16 intervenciones) el 28/11/2018 03:55:46
Una pregunta mas.

Como puedo agregar un metodo buscar y eliminar un elemento si este existe?

Agregue esto en la clase principal

1
2
3
4
5
6
7
8
9
10
11
12
13
case 8:
    Elemento=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingresa el "+" elemento a buscar...","Buscando nodos en la lista",
    JOptionPane.INFORMATION_MESSAGE));
    if (Listita.BuscarElemento(Elemento)==true) {
        int resp = JOptionPane.showConfirmDialog(null, "El elemento " + Elemento + " si esta en la lista quieres eliminarlo");
        if (JOptionPane.OK_OPTION == resp){
            System.out.println("Eliminar registro");
        }else{System.out.println("No Eliminar");
        }
    }else{JOptionPane.showMessageDialog(null, "El elemento " + Elemento + " no esta en la lista",
                "nodo no encintrado",JOptionPane.INFORMATION_MESSAGE);
    }
break;

Pero no se como deberia de quedar el metodo.

Pueden ayudarme, de favor.

DS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 33
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Impresion Lista muestra caracteres especiales

Publicado por Dany (16 intervenciones) el 28/11/2018 06:32:21
Son dos Metodos restantes los que necesito.

El de Buscar y eliminar e insertar donde el usuario elija (cualquier posicion)

Sigo testeando.

De antemano gracias.

DS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar