Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Problema con vectores o arrays, añadir y borrar

Estas en el tema de Problema con vectores o arrays, añadir y borrar en el foro de Java en Foros del Web. Hola buenas a todos, mi duda o problema es el siguiente, lo que intento es añadir un objeto a un array de objetos(Si, se que ...
  #1 (permalink)  
Antiguo 16/06/2015, 10:22
 
Fecha de Ingreso: junio-2015
Mensajes: 11
Antigüedad: 8 años, 10 meses
Puntos: 0
Problema con vectores o arrays, añadir y borrar

Hola buenas a todos, mi duda o problema es el siguiente, lo que intento es añadir un objeto a un array de objetos(Si, se que es mas fácil con ArrayList), pero lo que estoy intentando es con vectores.

Bueno el código es el siguiente(Código Resumido):

Código Java:
Ver original
  1. //Bueno en un principio cree el array de conductores, solo de 10:
  2.  
  3. static conductores[] ListaConductores = new conductores[10];
  4.  
  5. //...
  6. //Los añado los objetos:
  7.  
  8. conductores tax1 = new taxistas("11111111A", "Pepe Ivars", 7);
  9. conductores tax2 = new taxistas("22222222B", "Juan Perez", 5);
  10.        
  11. conductores trans1 = new transportistas("33333333C", "Miguel Garcia", 50000, 50);
  12. conductores trans2 = new transportistas("44444444D", "Pedro Martinez", 30000, 60);
  13.        
  14. conductores[] ListaConductores = {tax1, tax2, trans1, trans2};
  15.  
  16. //Ahora al intentar añadir un objeto mas no me deja, es decir que es como si no me lo reconociera...
  17. //Despues de introducir los datos por teclado creo el objeto
  18.  
  19. conductores tax = new taxistas(nif, nom, plazas);
  20.  
  21. //Ahora al pasar el for deberia de reconocer el null y sobreecribirlo no?          
  22.  
  23. for (int i = 0; i < ListaConductores.length; i++) {
  24.     if(ListaConductores[i] == null){
  25.     ListaConductores[i] = tax;
  26.     }
  27. }

Tengo el mismo problema al borrar un objeto...


Gracias de antemano.
  #2 (permalink)  
Antiguo 16/06/2015, 10:44
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Problema con vectores o arrays, añadir y borrar

Eso no es un Vector, es un Array, y concretamente un Array estático.

En tu caso, el problema es que creas un array vacío de 10 que es static y luego creas uno de 4 con el mismo nombre (mala idea), este concretamente

conductores[] ListaConductores = {tax1, tax2, trans1, trans2};

Si no lo indicas bien, java no sabe a cual te refieres, así que te coge el de 4.

Y desde luego no puedes añadir nuevos registros a ese de 4 porque es un array estático (tamaño fijo)
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 16/06/2015, 10:52
 
Fecha de Ingreso: junio-2015
Mensajes: 11
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Problema con vectores o arrays, añadir y borrar

Cita:
Iniciado por Xerelo Ver Mensaje
Eso no es un Vector, es un Array, y concretamente un Array estático.

En tu caso, el problema es que creas un array vacío de 10 que es static y luego creas uno de 4 con el mismo nombre (mala idea), este concretamente

conductores[] ListaConductores = {tax1, tax2, trans1, trans2};

Si no lo indicas bien, java no sabe a cual te refieres, así que te coge el de 4.

Y desde luego no puedes añadir nuevos registros a ese de 4 porque es un array estático (tamaño fijo)
Gracias por tu respuesta.

Pero me piden en un ejercicio hacer un array estatico de 10 posiciones, para luego añadir los objetos ya creados, es decir los que puse ahi y los que creo yo pidiendolo por teclado.

Ahora se me ocurrió hacerlo así mas o menos como me dijiste:

Código Java:
Ver original
  1. //Lo puse sin static
  2. conductores[] ListaConductores = new conductores[10];
  3.  
  4. //Cree los objetos y los añadí
  5. conductores tax1 = new taxistas("11111111A", "Pepe Ivars", 7);
  6. conductores tax2 = new taxistas("22222222B", "Juan Perez", 5);
  7.        
  8. conductores trans1 = new transportistas("33333333C", "Miguel Garcia", 50000, 50);
  9. conductores trans2 = new transportistas("44444444D", "Pedro Martinez", 30000, 60);
  10.  
  11. ListaConductores[0] = tax1;
  12. ListaConductores[1] = tax2;
  13. ListaConductores[2] = trans1;
  14. ListaConductores[3] = trans2;
  15.  
  16. //Pero ahora por ejemplo si quiero imprimirlo no me funciona... me sale el NullPointerException

Bueno ya conseguí imprimirlo...

Era haciendo:

Código Java:
Ver original
  1. conductores[] ListaConductores = new conductores[10];
  2.  
  3. //Cree los objetos y los añadí
  4. conductores tax1 = new taxistas("11111111A", "Pepe Ivars", 7);
  5. conductores tax2 = new taxistas("22222222B", "Juan Perez", 5);
  6.        
  7. conductores trans1 = new transportistas("33333333C", "Miguel Garcia", 50000, 50);
  8. conductores trans2 = new transportistas("44444444D", "Pedro Martinez", 30000, 60);
  9.  
  10. ListaConductores[0] = tax1;
  11. ListaConductores[1] = tax2;
  12. ListaConductores[2] = trans1;
  13. ListaConductores[3] = trans2;
  14.  
  15. for (int i = 0; i < ListaConductores.length; i++) {
  16.     if(ListaConductores[i] != null){
  17.         System.out.println(ListaConductores[i].imprimirConductor());
  18.     }
  19. }


Pero, ahora tengo el problema en añadir un objeto al array:

Código Java:
Ver original
  1. conductores tax = new taxistas(nif, nom, plazas);
  2.            
  3. for (int i = 0; i < ListaConductores.length; i++) {
  4.     if(ListaConductores[i] == null){ //el problema se que lo tengo exactamente aqui porque lo que doy a entender es que quiero modificar todas las posiciones que esten a null
  5.         ListaConductores[i] = tax;
  6.       }
  7. }

Por cierto, al utilizar la construccion que me dijiste, me sale mas veces el NullPointerException... no se porque sera...

Última edición por SwagSwag; 16/06/2015 a las 12:18
  #4 (permalink)  
Antiguo 16/06/2015, 13:46
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Problema con vectores o arrays, añadir y borrar

Con el trozo de código que has puesto es imposible que te dé un NullPointer, pero es evidente que no has puesto todo tu código porque no se ve la parte donde introduces los datos por consola, ni cómo la relacionas con este código.

Si ves un NullPointer, también verás en qué línea te está dando.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 17/06/2015, 16:22
 
Fecha de Ingreso: junio-2015
Mensajes: 11
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Problema con vectores o arrays, añadir y borrar

Cita:
Iniciado por Xerelo Ver Mensaje
Con el trozo de código que has puesto es imposible que te dé un NullPointer, pero es evidente que no has puesto todo tu código porque no se ve la parte donde introduces los datos por consola, ni cómo la relacionas con este código.

Si ves un NullPointer, también verás en qué línea te está dando.
Okey, ya lo tengo todo bien listo gracias... Ahora me da el problema de añadir un objeto a un array... no consigo con dar en la clave...

En vez de modificarme un solo puesto, se me modifica todos los nulls... y no es así, pero bueno, le intentaré a ver como me lo monto para solucionarlo.

Gracias por la ayuda.
  #6 (permalink)  
Antiguo 18/06/2015, 11:12
 
Fecha de Ingreso: junio-2015
Mensajes: 11
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Problema con vectores o arrays, añadir y borrar

Cita:
Iniciado por Xerelo Ver Mensaje
Con el trozo de código que has puesto es imposible que te dé un NullPointer, pero es evidente que no has puesto todo tu código porque no se ve la parte donde introduces los datos por consola, ni cómo la relacionas con este código.

Si ves un NullPointer, también verás en qué línea te está dando.
Si me podrias ayudar otra vez te lo agredeceria tio...

Ahora ya me sale todo, pero a la hora de añadir un objeto al array, se me repite el mismo objeto unas cuantas veces...

Aqui el codigo entero:

Código Java:
Ver original
  1. public static void nuevoConductor(conductores[] ListaConductores){
  2.        
  3.         String nif;
  4.        
  5.         System.out.println("Que necesitas crear, un 'taxista' o un 'transportista'?");
  6.         String opcionClase = lector.nextLine();
  7.        
  8.         if(opcionClase.equalsIgnoreCase("Taxista")){
  9.            
  10.             System.out.println("Dime el nif: (recuerda que la letra debe de ir en mayuscula, si no la aplicacion no lo reconocera...)");
  11.             nif = lector.nextLine();
  12.            
  13.             while(nif.length()!=9){
  14.             System.out.println("No lo pusiste bien, dimelo otra vez..");
  15.             System.out.println("Dime el nif: ");
  16.             nif = lector.nextLine();
  17.             }
  18.            
  19.             //COMPROBACION DE NIF
  20.             if(nif.length() == 9){
  21.                 System.out.println("Comprobando si es un nif verdadero...");
  22.                 System.out.println(" ");
  23.                 System.out.println("Comprobando si tiene una letra al final...");
  24.                 System.out.println(" ");
  25.                
  26.                 if(validarNIF(nif) == true){
  27.                     for (int i = 0; i < 5; i++) {
  28.                         System.out.println("...");
  29.                         System.out.println(" ");
  30.                     }
  31.                     System.out.println("Si que tiene una letra...");
  32.                     System.out.println(" ");
  33.                     System.out.println("Siguiente fase de comprobacion..");
  34.                 }
  35.                 System.out.println(" ");
  36.                 System.out.println("Comprobando si hay alguna letra entre los numeros...");
  37.                 System.out.println(" ");
  38.                 if(validarNIF(nif) == true){
  39.                     System.out.println("Son 8 numeros, el nif es valido..");
  40.                 }
  41.                 System.out.println(" ");
  42.                 System.out.println("COMPROBACION DE NIF FINALIZADA. TODO CORRECTO.");
  43.                
  44.             }
  45.            
  46.             while(validarNIF(nif) == false){
  47.                 System.out.println("Hay letras. ERROR. Finalizando aplicacion.");
  48.             }
  49.            
  50.             while(validarNIF(nif) == false){
  51.                 System.out.println("No tiene una letra... ERROR. Finalizando aplicacion.");
  52.                 break;
  53.             }
  54.            
  55.             System.out.println("Dime el nombre: ");
  56.             nom = lector.nextLine();
  57.            
  58.             System.out.println("Cuantas plazas tiene el taxista? ");
  59.             plazas = lector.nextInt();
  60.             lector.nextLine();
  61.            
  62.             while((plazas<=4) || (plazas>=10)){
  63.                 System.out.println("Tiene que ser entre 5 y 9, reinicia la aplicacion por favor.");
  64.                 break;
  65.             };
  66.            
  67.             //Añadimos el taxista al array de conductores
  68.             conductores tax = new taxistas(nif, nom, plazas);
  69.            
  70.            
  71.             // NO ME FUNCIONA
  72.             for (int i = 0; i < ListaConductores.length; i++) {
  73.                 if((ListaConductores[i] == null)){ //se que lo estoy asignando a todas las posiciones null... pero no consigo dar con la construccion para que no se me repita...
  74.                     ListaConductores[i] = tax;
  75.                 }
  76.             }
  77.                
  78.             for (int i = 0; i < ListaConductores.length; i++) {
  79.                 if(ListaConductores[i] != null){
  80.                 System.out.println(ListaConductores[i].imprimirConductor().toString());
  81.                 }
  82.             }
  83.         }
  #7 (permalink)  
Antiguo 18/06/2015, 13:03
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Problema con vectores o arrays, añadir y borrar

Tienes infinitas soluciones, solo es cuestión de echarle imaginación.

Puedes buscar la primera posición que sea null (con un método) y le asignas el valor a esa posición.

Puedes hacer que una vez que asignes el valor a un null tax sea null.

Puedes usar un bucle con while.

Investigar sobre el uso de for

https://docs.oracle.com/javase/tutor...ts/branch.html

O puedes imaginarte que alguien ya ha tenido ese problema

https://www.google.es/webhp?sourceid...e+un+bucle+for
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #8 (permalink)  
Antiguo 18/06/2015, 13:34
 
Fecha de Ingreso: junio-2015
Mensajes: 11
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Problema con vectores o arrays, añadir y borrar

Cita:
Iniciado por Xerelo Ver Mensaje
Tienes infinitas soluciones, solo es cuestión de echarle imaginación.

Puedes buscar la primera posición que sea null (con un método) y le asignas el valor a esa posición.

Puedes hacer que una vez que asignes el valor a un null tax sea null.

Puedes usar un bucle con while.

Investigar sobre el uso de for

[url]https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html[/url]

O puedes imaginarte que alguien ya ha tenido ese problema

[url]https://www.google.es/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=java+como+salir+de+un+bucle+for[/url]
DIOS, por fin, gracias por todo compañero... encontre la solucion... un simple break faltaba...

Etiquetas: arraylist, arrays, vectores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:53.