Java - ordenamiento en una lista JAVA

 
Vista:
sin imagen de perfil

ordenamiento en una lista JAVA

Publicado por edgar fabian (5 intervenciones) el 30/04/2017 03:55:10
cordial saludo, he estado intentando realizar el siguiente programa y he tenido cierta dificultad a la hora de realizar el ordenamiento de la lista en JAVA, el programa consiste en :

Se desea crear una lista de una empresa que contiene la información de los clientes: nombre, cedula, teléfono y saldo. El programa debe permitir llenar la lista. Hasta que se digite la cedula 0. Dicha lista debe quedar ordenada.

Luego de ingresada la información se debe comenzar a pedir los movimientos de los clientes, que incluyen: número del movimiento, cedula del cliente, tipo (1 si es abono y 2 si es compra nueva) y valor. Cuando se recibe la cedula del cliente, se debe buscarlo en la lista y ubicarse en su respectivo nodo. Al escribir el valor del movimiento, se debe sumar al saldo (si es una compra), o se debe restar del saldo, si es un abono. Si el cliente no se consigue, se debe volver a digitar el número del movimiento y la cedula. Se debe parar cuando el movimiento sea -1.

Cuando para de recibir movimientos se debe imprimir la lista de los clientes con su respectivo nombre y saldo de la siguiente forma

LISTA DE CLIENTES
JOSÉ DE LOS ÁNGELES RINCÓN: SALDO= 23344444
JUAN DE JESÚS MARTÍNEZ: SALDO = 23455666
Al final se debe indicar cuanto fue el movimiento del día en dinero (suma de los movimientos)
Cuantos movimientos se realizaron. Cuanto es el total de la deuda de los clientes.
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
public static void main(String[] args) {
 
 
 
        clase_listas nuevo= null, cab =null, p=null, q=null;
 
        int cedula;
        int Deudad=0;
        int aux;
        int movDin=0;
 
        Scanner leer=new Scanner (System.in);
 
        System.out.println("digite el numero de cedula");
        cedula=leer.nextInt();
 
        while (cedula!=0){
 
        nuevo=new clase_listas();
        nuevo.cc=cedula;
            System.out.println("ingrese nombre");
            nuevo.nombre=leer.next();
 
 
            System.out.println("ingrese telefono");
            nuevo.telefono=leer.nextInt();
 
            System.out.println("ingrese saldo $:");
            aux=leer.nextInt();
            nuevo.saldo=aux;
 
            Deudad=aux+Deudad;
 
        if(cab==null){
        cab=nuevo;
                    }else
                        {if(nuevo.cc<cab.cc)
 
                        {
                            nuevo.sig=cab;
                            cab=nuevo;
                        }
 
                        else
                            {
                              p=cab;
 
                              while((p.sig != null) || (nuevo.cc < p.cc)){
                                  if(nuevo.cc < p.cc){
 
                                     q.sig=nuevo;
                                     nuevo.sig=p;
                                     p=null;
                                     break;
                                  }else{
                                        q=p;
                                        p=p.sig;
                                  break;}
 
                                  }if(p !=null){
                                  p.sig=nuevo;
                                  }
                         }
        }
            System.out.println("digite cedula o cero  para terminar");
            cedula=leer.nextInt();}
 
 
        //movimientos del cliente
 
        int mov,CantMov=0;
        System.out.println("numero del movimiento: ");
        mov=leer.nextInt();
 
        while (mov!=-1){ //abre while -1     
 
            System.out.println("cedula del cliente");
            cedula=leer.nextInt();
 
            p=cab;
            while(p!=null){
 
                if(cedula==p.cc)
                    {
                        int tipo,valor;
                        System.out.println("tipo 1. abonar 2. fiar");
                        tipo=leer.nextInt();
 
                        System.out.println("valor $");
                        valor=leer.nextInt();
                        movDin=valor+movDin;
 
                        if(tipo==1)
                            {p.saldo=p.saldo-valor;
                            Deudad=Deudad-valor;}
                        else
                            {p.saldo=p.saldo+valor;
                            Deudad=Deudad+valor;}
                        CantMov++;
                    }
 
                else{System.out.println("no se ha conseguido el cliente");}
 
                System.out.println("digite numero de movimiento: ");
                mov=leer.nextInt();
 
 
            p=p.sig;
            break;
            }
 
 
        }//cierra while -1
        //termino de movimientos
 
 
        System.out.println("LISTA DE CLIENTES: ");
 
        p=cab;
        while(p!=null){
            System.out.println("nombre "+p.nombre+" saldo: $"+p.saldo);
 
            p=p.sig;
        }
 
        System.out.println("CANTIDAD DE MOVIMIENTOS: "+CantMov);
        System.out.println("DEUDAD DE LOS CLIENTES: "+Deudad);
        System.out.println("MOVIMIENTO EN EL DIA EN DINERO: $"+movDin);

el problema creo que esta en el ordenamiento de la lista ya que al realizar el llenado de la lista, el los guarda y al final los muestra, pero cuando estoy realizando un movimiento y busco la segunda cedula guardada o la tercera o la cuarta arroja el resultado que la "cedula no existe", solo me deja realizar movimientos con la primer cedula que introduzca, por favor alguien que me pueda ayuda, de ante mano muchas gracias
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