Java - Error al recorrer listas enlazadas

 
Vista:

Error al recorrer listas enlazadas

Publicado por jose antonio barrios (2 intervenciones) el 28/11/2019 18:44:05
Buenas tardes estoy intentado recorrer una lista enlazada para buscar por un dni que se pide por pantalla:

1
2
3
4
5
6
7
8
9
String bus123;
System.out.println("Introduce el dni a buscar");
bus123=scanf.next();
while(it.hasNext()) { //No entiendo
Persona varian12= it.next(); // tipo persona con un nombre y recorre?
if (varian12.equals(bus123)) {
    System.out.println("hola");
 
}
se ha creado una clase persona con estos atributos ("nombre","apellidos","dni","direccion")
y quiero buscar por el campo dni de cada una de las personas, no se mucho de listas enlazadas ya que trabajamos con array alguien me podria ayudar o simplemente explicar el trozo comentado
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 Lawliet
Val: 888
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Error al recorrer listas enlazadas

Publicado por Lawliet (303 intervenciones) el 28/11/2019 18:47:32
Hola!!!

Podrías colocar el código completo, por favor; es decir, desde donde declaras tu lista ya que por el código creo que tienes una lista de String cuando debería ser una lista de tipo Persona para comparar el DNI.

Sin más que comentar, quedo al pendiente de cualquier duda y/o comentario.

Saludos! :3
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

Error al recorrer listas enlazadas

Publicado por jose antonio barrios (2 intervenciones) el 28/11/2019 19:14:48
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
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ayuda;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Scanner;
 
/**
 *
 * @author linpc
 */
public class ayuda {
 
    public static void main(String[] args) {
      ArrayList<optativa.Persona> Person=new ArrayList();
      Scanner scanf = new Scanner(System.in);
      HashMap <String, optativa.Persona> mapa2 = new HashMap <String, optativa.Persona> ();
      LinkedList<optativa.Persona> LL = new LinkedList(); //metes el tipo del objeto en este caso el tipo del array que es persona
      Iterator<optativa.Persona> it= LL.iterator(); //iterador para recorrerr
      optativa.Persona P2 = new optativa.Persona("nombre","apellidos","dni","direccion");
      mapa2.put(P2.getDni(),P2);
      LL.add(P2);
      optativa.Persona P3 = new optativa.Persona("nombre1","apellidos1","prueba","direccion1");
      mapa2.put(P3.getDni(),P3);
      LL.add(P3);
 
        boolean salir=true;
        int op;
        while(salir!=false){
            System.out.println("Menu");
            System.out.println("1. Crear una nueva persona");
            System.out.println("2. Eliminar una persona");
            System.out.println("3. Buscar una persona");
            System.out.println("4. Salir");
            op=scanf.nextInt();
            switch(op){
                case 1:
                    String nombre,apellido,dni,direccion;
 
                    System.out.println("Introduce el nombre");
                    nombre=scanf.next();
                    System.out.println("Introduce el apellio");
                    apellido=scanf.next();
                    System.out.println("Introduce el dni");
                    dni=scanf.next();
                    System.out.println("Introduce la direccion");
                    direccion=scanf.next();
 
                        Persona p=new Persona(nombre,apellido,dni,direccion);
                        LL.add(p);
                    break;
                case 2:
 
                    System.out.println("Introduce el valor a eliminar");
                        int elimin;
                        for(int z=0;z<LL.size();z++){
                            System.out.println(z);
                            System.out.println(LL.get(z).getNombre());
                            System.out.println(LL.get(z).getDni());
                            System.out.println("----------------");
                        }
                        System.out.println("Introduce la posicion a borrar");
                        elimin=scanf.nextInt();
                        LL.remove(elimin);
 
                    break;
                case 3:
                        String bus123;
                        System.out.println("Introduce el dni a buscar");
                        bus123=scanf.next();
                            while(it.hasNext()) {
                            Persona varian12= it.next();
                                if (varian12.getdni().equals(bus123)) {
                                    System.out.println();
 
                                }
                            }
                    break;
                case 4:
                    salir=false;
                    break;
            }
        }
 
   }
}
Te paso el archivo completo a ver si te sirve me funcionan todo menos la busqueda, es la primera vez que trabajo con las listas enlazadas por si ver alguna barbaridad, muchas gracias y un saludo!
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
Imágen de perfil de Lawliet
Val: 888
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Error al recorrer listas enlazadas

Publicado por Lawliet (303 intervenciones) el 28/11/2019 23:05:09
Hola!

Hice algunos cambios a tu código con el objetivo de que funcionara lo que planteas, así como también, realice algunas correcciones de líneas que no veía necesarias...

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
Scanner scanf = new Scanner(System.in);
List<Persona> LL = new ArrayList<Persona>();
 
boolean salir = true;
int op;
while (salir != false) {
    System.out.println("Menu");
    System.out.println("1. Crear una nueva persona");
    System.out.println("2. Eliminar una persona");
    System.out.println("3. Buscar una persona");
    System.out.println("4. Salir");
    op = scanf.nextInt();
    switch (op) {
    case 1:
        String nombre, apellido, dni, direccion;
 
        System.out.println("Introduce el nombre");
        nombre = scanf.next();
        System.out.println("Introduce el apellio");
        apellido = scanf.next();
        System.out.println("Introduce el dni");
        dni = scanf.next();
        System.out.println("Introduce la direccion");
        direccion = scanf.next();
 
        Persona p = new Persona(nombre, apellido, dni, direccion);
        LL.add(p);
        break;
    case 2:
 
        System.out.println("Introduce el valor a eliminar");
        int elimin;
        for (int z = 0; z < LL.size(); z++) {
            System.out.println(z);
            System.out.println(LL.get(z).getNombre());
            System.out.println(LL.get(z).getDni());
            System.out.println("----------------");
        }
        System.out.println("Introduce la posicion a borrar");
        elimin = scanf.nextInt();
        LL.remove(elimin);
 
        break;
    case 3:
        System.out.println("Introduce el dni a buscar");
        String bus123 = scanf.next();
 
        for(Persona persona : LL) {
            if(persona.getDni().equalsIgnoreCase(bus123)) {
                System.out.println(persona.getNombre() + " " + persona.getApellidos());
                break;
            }
        }
        break;
    case 4:
        salir = false;
        break;
    }
}

Sin más que comentar, quedo al pendiente de cualquier duda y/o comentario.

Saludos!
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