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

Eliminar una instancia de un array

Estas en el tema de Eliminar una instancia de un array en el foro de Java en Foros del Web. Hola muy buenas este es mi primer mensaje en el foro aunque llevo algo mas de un mes mirando cosillas y tengo que deciros que ...
  #1 (permalink)  
Antiguo 13/01/2012, 14:06
Avatar de migue1891  
Fecha de Ingreso: enero-2012
Mensajes: 50
Antigüedad: 12 años, 3 meses
Puntos: 0
Eliminar una instancia de un array

Hola muy buenas este es mi primer mensaje en el foro aunque llevo algo mas de un mes mirando cosillas y tengo que deciros que habeis sido de gran ayuda. Estoy aprendiendo a programar en Java es mi primer año y supongo que mi duda sera una tontería pero no encontraba ningún tipo de ayuda en internet a si que he decidido preguntaros directamente.

Tengo un programa que recoje la información de los empleados de una empresa (Nombre, fecha nacimiento y años de experiencia.) Cuando llega a 10 los imprime en pantalla. Hasta ahi no tengo ningun problema el caso es que tengo que implementarle una función para que a traves de teclado pueda eliminar uno de los empleados.

La recogida de datos la estoy haciendo a traves de bufferedReader, y uso un for para que haya una secuencia del 0 al 9 en la array

La cuestión es que no se como igualar los String que recoje para guardar el dato y el que usa para Eliminarlo y tampoco se como eliminarlo, El profesor solo ha mencionado que hay que hacerlo con un "null"

Si necesitáis el código decidmelo no lo subo por no cargar mas esto...

Un saludo y gracias de antemano!
  #2 (permalink)  
Antiguo 13/01/2012, 14:18
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Eliminar una instancia de un array

Hola, para comparar dos cadenas puede realizar algo parecido a esto con el método equals

Código Java:
Ver original
  1. String cad1="Hola";
  2. String cad2="Mundo";
  3. if(cad1.equals(cad2))
  4.   System.out.println("Si son iguales");
  5. else
  6.   System.out.println("No son iguales");

Espero te sirva y sino pega tu implementación.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #3 (permalink)  
Antiguo 13/01/2012, 14:26
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Eliminar una instancia de un array

Para responder su segunda pregunta supongo que esta usando un arrayList o no, ya que las personas por lo lo general dicen array a toda colección de datos?
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #4 (permalink)  
Antiguo 13/01/2012, 14:32
Avatar de migue1891  
Fecha de Ingreso: enero-2012
Mensajes: 50
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Eliminar una instancia de un array

Antes de todo muchisimas gracias por contestar y más aun por ser tan rapido pero a no ser que no lo este implementando bien eso ya lo intente y creo que es algo mas complejo, Te dejo el codigo de las tres clases que estoy usando, Aunque la que tiene que implemental la funcionalidad es "Empresa"
package empresa;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Principal {
public static void main(String[] args) throws IOException {

Empresa EmpleadosEmpresa = new Empresa();//crea una nueva empresa
EmpleadosEmpresa.inicializar();//llama al metodo inicializar
EmpleadosEmpresa.imprimir();//llama al metodo imprimir
}

public class Empleados {

String nombre;
String fechanac;
int experiencia;

public Empleados(String nombre, String fechanac, int experiencia) {
this.nombre = nombre;
this.fechanac = fechanac;
this.experiencia = experiencia;
}


public int getExperiencia() {
return experiencia;
}

public void setExperiencia(int experiencia) {
this.experiencia = experiencia;
}

public String getFechanac() {
return fechanac;
}

public void setFechanac(String fechanac) {
this.fechanac = fechanac;
}
public class Empresa {

Empleados [] listaEmpleados = new Empleados[10]; //Creamos el array de la lista de empleados


//imprime la lista de empleados
public void imprimir (){
for(int i=0;i<10;i++){
listaEmpleados[i].imprimir();

}
}
public void inicializar() throws IOException{//crea los empleados

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

for(int i=0;i<10;i++){ //Bucle que crea los 10 empleados

System.out.println("Nombre:"+"\n");
String n= br.readLine();
System.out.println("Tu Fecha de nacimiento:"+"\n");
String f = br.readLine();
System.out.println("Años de Experiencia:");
String ji = br.readLine();
int e = Integer.parseInt(ji);

Empleados uno = new Empleados(n,f,e);
listaEmpleados[i]=uno;


}
}

}

Y estaba intenda algo como esto:

System.out.println("¿Desea eliminar a algun empleado?");
String d= br.readLine();
if ( d.equalsIgnoreCase(n) ) // true
listaEmpleados[]=null;
else
salida += "No has introducido ningun nombre correcto";

AUNQUE SUPONGO QUE ADEMAS DE SER UNA BURRADA LE FALTARA ALGUN BUCLE O ALGO QUE RECORRA LA ARRAY VERDAD?

Última edición por migue1891; 13/01/2012 a las 14:37
  #5 (permalink)  
Antiguo 13/01/2012, 14:38
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Eliminar una instancia de un array

Y donde está su método para eliminar un empleado?
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #6 (permalink)  
Antiguo 13/01/2012, 14:39
Avatar de migue1891  
Fecha de Ingreso: enero-2012
Mensajes: 50
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Eliminar una instancia de un array

Capacprog gracias por tu interes, no no estoy unsando ArrayList ya que el profesor nos ha dicho que lo veremos el siguiente dia.

Ese es precisamente el que no se implementar ;)

Un saludo,
  #7 (permalink)  
Antiguo 13/01/2012, 14:46
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Eliminar una instancia de un array

De su implementación veo que Ud. usa un vector de tipo Empleado en su clase Empresa. Si desea "borrar" un elemento de su listaEmpelados puede hacer esto:

Código Java:
Ver original
  1. //Antes debe de estar su condicional para borrar al Empleado
  2. listaEmpleados[i]=null;//con esto borra al empleado de la lista.
con ello el elemento perderá la referencia a su contenido y el GC hará su trabajo liberando la memoría.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #8 (permalink)  
Antiguo 13/01/2012, 14:53
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Eliminar una instancia de un array

Cita:
Iniciado por migue1891 Ver Mensaje
Y estaba intenda algo como esto:

System.out.println("¿Desea eliminar a algun empleado?");
String d= br.readLine();
if ( d.equalsIgnoreCase(n) ) // true
listaEmpleados[]=null;
else
salida += "No has introducido ningun nombre correcto";

AUNQUE SUPONGO QUE ADEMAS DE SER UNA BURRADA LE FALTARA ALGUN BUCLE O ALGO QUE RECORRA LA ARRAY VERDAD?
Y cuál es el criterio para borrar un empleado? Pués no recoge ningún dato más para discriminar. Si ese código corre (veo que no) estarías borrando todos los Empleados de tu listaEmpleados.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #9 (permalink)  
Antiguo 13/01/2012, 14:56
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Eliminar una instancia de un array

Le recomiendo que añada a su clase Empleado un atributo código, que sea único para un Empleado y que no se repita ya que este sería un buen discriminador para eliminar a una instancia de su listaEmpleados. Pués sólo pediría el código a eliminar.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #10 (permalink)  
Antiguo 14/01/2012, 07:26
Avatar de migue1891  
Fecha de Ingreso: enero-2012
Mensajes: 50
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Eliminar una instancia de un array

Se que estaba mal escrito era una idea de por donde podian haber ido los tiros (consciente de que no era ninguna solucion), reconozco que todavia estoy muy verde y tengo algunas incoherencias, llevo muy poco tiempo programando, yo sabia que habia un problema al seleccionar el empleado que queria borrar, agradezco enormemente su paciencia, voy hacerle caso haber si lo veo mas claro con este consejo. ya te contare que tal me ha ido

De nuevo Muchas gracias. Un saludo y hasta pronto! :D
  #11 (permalink)  
Antiguo 14/01/2012, 08:16
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Eliminar una instancia de un array

Ok, estaré pendiente.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #12 (permalink)  
Antiguo 14/01/2012, 14:19
Avatar de migue1891  
Fecha de Ingreso: enero-2012
Mensajes: 50
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Eliminar una instancia de un array

Bueno creo que va para adelante, aunque tengo problemas de ejecucion que deben ser de simple logica aunque no consigo verlos.

He introducido el atributo "codigo" (código del empleado) en la clase empleado ademas de implementar un metodo llamado imprimirMas que me vuelva a imprimir los atributos del empleado.

El código que he añadido a la clase empresa es el siguiente:

public void eliminarEmpleado () throws IOException{


InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

System.out.println("¿Quieres elimiar a algun empleado?");
String del= br.readLine();
int c=Integer.parseInt(del);

listaEmpleados[c]=null;

}

public void imprimirMas (){
System.out.println("Empleado Borrado"+"\n"+"Estos son los empleados restantes:");
for(int i=0;i<9;i++){
listaEmpleados[i].imprimirMas();

}
}

Última edición por migue1891; 14/01/2012 a las 14:25
  #13 (permalink)  
Antiguo 14/01/2012, 18:32
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Eliminar una instancia de un array

Lo que veo es que esta leyendo un indice del vector a eliminar y no un código. Debe de validar la lectura cosa que no si no existe el código no se elimine y muestre el mensaje correspondiente
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%

Última edición por CapacProg; 14/01/2012 a las 18:47
  #14 (permalink)  
Antiguo 14/01/2012, 19:32
Avatar de migue1891  
Fecha de Ingreso: enero-2012
Mensajes: 50
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Eliminar una instancia de un array

Pero son dos cosas distintas no? por lo que entiendo me esta diciendo, en primer lugar que cuando implemento el metodo de eliminarEmpleado no estoy eliminado al empleado sino el vecto "código" puede ser?
La segunda es que debo validar la lectura con el código que me facilitaste al principio? para comprobar si existe tal empleado?

Muchisimas gracias de nuevo me siento bastante torpe con tantas preguntas. Un saludo
  #15 (permalink)  
Antiguo 15/01/2012, 01:00
 
Fecha de Ingreso: enero-2012
Mensajes: 49
Antigüedad: 12 años, 3 meses
Puntos: 4
Mensaje Respuesta: Eliminar una instancia de un array

Lo que quiere decir es que una cosa es la posición en un array y otra muy distinta el valor de lo que la casilla contiente:

Pongamoslo más visual:

listaEmpleados
[0][1][2][3][4][5][6][7][8][9] -> Posiciones

Posición [0] :
  • Codigo: "1439AA"
  • Nombre: "Pepito"
  • Fecha Nacimiento: #01/01/1970#
  • Experiencia: 3

Una vez visto esto, intenta comprender que no puedes escribir listaEmpleados[c] y esperar que entienda que te refieres al objeto cuyo código en el array sea igual a c.

Para ello tendrás que crear un bucle que recorra el array en busca del código:

Código java:
Ver original
  1. System.out.println("Introduzca el código del empleado a eliminar: ");
  2.         String codigo= br.readLine();
  3.  
  4. for(int i=0;i<10;i++){
  5.      if(codigo.EqualsIgnoreCase(listaEmpleados[i].getCodigo())){
  6.           listaEmpleados[i]=null;
  7.           break; //si ya lo hemos encontrado no necesitamos buscar más
  8.     }
  9. }
  10. if(i>=10) //Existe la posibilidad de que recorramos el array y no lo encontremos
  11. System.out.println("No has introducido ningun código correcto");
  12. else
  13.           System.out.println("El empleado "+i+" con código "+codigo+" ha sido eliminado");
  #16 (permalink)  
Antiguo 15/01/2012, 07:39
Avatar de migue1891  
Fecha de Ingreso: enero-2012
Mensajes: 50
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Eliminar una instancia de un array

Ya, ahora lo veo claro, es evidente mi planteamiento era totalmente erroneo, Ya lo tengo prácticamente acabado.

Me habeis ayudado mucho los dos, Muchisimas gracias y hasta la proxima :D
  #17 (permalink)  
Antiguo 15/01/2012, 07:55
 
Fecha de Ingreso: enero-2012
Mensajes: 49
Antigüedad: 12 años, 3 meses
Puntos: 4
Respuesta: Eliminar una instancia de un array

No hay de qué, que te vaya bien y ya nos leeremos por aquí. Quién sabe, igual para la próxima tú me ayudas a mí

Etiquetas: instancia, string
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 03:56.