La interficie va genial pero el codigo base para trabajar con las listas de arrays me da errores. Concretamente un NullPointerException que nose como abarcar.
Paquete que crea la lista de referencias de clientes, el campo "cliente" es un puntero hacia un nodo del tipo "NodoListaClientes" que dentro tiene "nombre_cliente", "info_cliente" y una "lista de propiedades".
Código:
Ahora el cacho que intento ejecutar: (Me compila genial pero me falla en la ejecución)package arrays; class NodoListaRefCliente{ NodoListaClientes cliente; NodoListaRefCliente(NodoListaClientes cli){ cliente=cli; } } class ListaRefClientes{ NodoListaRefCliente[] refclientes = new NodoListaRefCliente[100]; int PrimerNodo; int UltimoNodo; public int Fin_L_Ref_Clientes(){ if (UltimoNodo==100){ return UltimoNodo; } else{ return UltimoNodo+1; } } public void Insertar_Ref_Cliente(NodoListaClientes cli, int Posicion){ if (cli!=null){ if (UltimoNodo==100){ System.out.println("La lista está llena."); } else{ if ((Posicion<=UltimoNodo)&(Posicion!=0)){ NodoListaRefCliente aux,aux2; aux=refclientes[Posicion]; NodoListaRefCliente nod=new NodoListaRefCliente(cli); refclientes[Posicion]=nod; for (int i=Posicion+1;i<=UltimoNodo+1;i++){ aux2=refclientes[i]; refclientes[i]=aux; aux=aux2; } UltimoNodo++; } else{ if (Posicion!=0){ if (Posicion<=100){ System.out.println("La posición no existe, se insertará al final de la lista"); if (UltimoNodo==0){ PrimerNodo=1; } UltimoNodo++; NodoListaRefCliente aux=new NodoListaRefCliente(cli); refclientes[Posicion]=aux; } } else{ System.out.println("Error, la posición no existe."); } } } } } }
Código:
Notas:public static void main(String[] args) throws Exception{ ListaLocalidades LL = new ListaLocalidades(); ListaRefClientes LRC = new ListaRefClientes(); Clientes LC = new Clientes(); LL.Crear_L_Localidades(); LRC.Crear_L_Ref_Clientes(); LC.Crear_L_Clientes(); LL.Insertar_Localidad("Palma", LL.Fin_L_Localidades()); LRC=LL.R1(LL.Localiza_Localidad("Palma")); LC.Insertar_Cliente("Emilio","loquesea",LC.Fin_L_Clientes()); int poscli=LC.Localiza_Cliente("Emilio"); LRC.Insertar_Ref_Cliente(LC.clientes[poscli],LRC.Fin_L_Ref_Clientes()); }
· Los métodos crear solo ponen "PrimerNodo" y "UltimoNodo" igual a 0.
· R1 devuelve una lista de localidades pasandole un int que sea la posicion en la lista de localidades.
· Localiza_Cliente devuelve la posicion de un cliente con el nombre que se le indique, en este caso "Emilio".
Me da error de NullPointerException justamente en la siguiente linea:
LRC.Insertar_Ref_Cliente(LC.clientes[poscli],LRC.Fin_L_Ref_Clientes());
Pero por lo que se ese error me lo debe de dar porque "LC.clientes[poscli]" debe retornar algo "null", ¿no? Porque lo otro, el "LRC.Fin_L_Ref_Clientes()" devuelve tipo int y no tiene mucho sentido.
En cualquier caso, me estoy volviendo loco porque pensaba que tenía el programa viento en popa y me ha salido esto que no esperaba.
Mil gracias al que me ayude