Java - Borrar elemento del array

 
Vista:
Imágen de perfil de tesi

Borrar elemento del array

Publicado por tesi (37 intervenciones) el 16/04/2015 11:39:59
Buenas a ver si me podeis ayudar quisiera borrar un numero tantas veces como aparezca en el arrayList que introduzca por teclado. Asi me funciona pero por ejemplo si introduzco el 4 me lo borra 2 de ellos no los 3 que es las veces que esta..
MI CODIGO:
public void borrar() {
ArrayList<Integer> a=new ArrayList<>(); {{ //Declaración y creación del ArrayList de enteros.
a.add(4);a.add(4);a.add(12);a.add(3);a.add(41);a.add(39);a.add(21);a.add(4);}}
System.out.println("Introduce el número que quieres eliminar: ");
int num=teclado.nextInt();
for(int i=0; i<a.size(); i++){
if(a.get(i).equals(num)){ //Se eliminan el número/s igual al que se ha introducido por teclado.
a.remove(i);
}
}
for(int i=0; i < a.size(); i++){ //Se muestra.
System.out.print(a.get(i)+" ");
}
System.out.println();
}
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
sin imagen de perfil
Val: 214
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Borrar elemento del array

Publicado por juanki (131 intervenciones) el 16/04/2015 17:50:23
Hola

Creo que tienes que recorrer el arrray al revés y empezar a eliminar las coincidencias por el final. El motivo es que cuando borras un elemento, los índices cambian, el que estaba en la posición 2 (por ejemplo), ahora pasa a estar en la posición 1 y, sin embargo, el contador del bucle se incrementa, por lo que se salta una posición.

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
Imágen de perfil de tesi

Borrar elemento del array

Publicado por tesi (37 intervenciones) el 16/04/2015 21:10:31
Tienes toda la razón no caí es cierto, entonces sería así pero me peta el programa no lo entiendo... :(
for(int i=a.size(); i>0; i--){
if(a.get(i).equals(num)){ //Se eliminan el número/s igual al que se ha introducido por teclado.
a.remove(i);
}
}
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
sin imagen de perfil
Val: 214
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Borrar elemento del array

Publicado por juanki (131 intervenciones) el 16/04/2015 22:40:00
Hola

a.size() te da el tamaño del array, pero como el primer elemento es el 0, tienes que poner a.size() - 1, ya que si no estaríamos apuntando a un elemento que no existe.

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 tesi

Borrar elemento del array

Publicado por tesi (37 intervenciones) el 17/04/2015 00:32:33
Al introducir el numero 4 por teclado sigue sin borrarse los tres 4 que hay, solo se borran dos..me voy a volver loco jaj
perdone a ver si sabes usted. Un saludo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void borrar() {
ArrayList<Integer> a=new ArrayList<>(); {{ //Declaración y creación del ArrayList de enteros.
a.add(4);a.add(4);a.add(12);a.add(3);a.add(41);a.add(39);a.add(21);a.add(4);}}
        System.out.println("Introduce el número que quieres eliminar: ");
        int num=teclado.nextInt();
            for(int i=a.size()-1; i>0; i--){
                if(a.get(i).equals(num)){       //Se eliminan el número/s igual al que se ha introducido por teclado.
                    a.remove(i);
                }
            }
for(int i=0; i < a.size(); i++){ //Se muestra.
System.out.print(a.get(i)+" ");
}
System.out.println();
}
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 Alberto
Val: 308
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Borrar elemento del array

Publicado por Alberto (303 intervenciones) el 17/04/2015 01:12:45
Hola...

Porque no intentas modificando tu ciclo por el siguiente...

1
2
3
for(int i=a.size()-1; i>=0; i--){
...
}

Sin mas que comentar, cualquier duda y/o comentario, aquí estamos. Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de tesi

Borrar elemento del array

Publicado por tesi (37 intervenciones) el 17/04/2015 01:29:47
Perfecto faltaba el igual ainss.. muchas gracias de nuevo :)
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

Borrar elemento del array

Publicado por matrix (1 intervención) el 12/10/2017 16:56:20
Una solución simple seria decrementar la variable i cuando el numero introducido sea igual al valor de la lista:
if(a.get(i).equals(num)){
a.remove(i);
i--;
}
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