Java - Eliminar un número determinado de un arreglo

 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Eliminar un número determinado de un arreglo

Publicado por Ana (4 intervenciones) el 20/03/2020 10:14:59
Alguien que me pueda ayudar, necesito hacer un método que eliminé un número determinado en arreglos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-1
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Eliminar un número determinado de un arreglo

Publicado por Kabuto (1381 intervenciones) el 20/03/2020 11:30:08
¿Puedes poner o transcribir el enunciado exacto del ejercicio que te proponen?

Incluso si comienzas tú un código y planteas una duda más concreta de donde te atascas, mejor..

Porque así tal y como lo expones, a pesar de que parece algo muy simple, surgen dudas de lo que se pretende conseguir. Por ejemplo, en un arreglo normal y corriente con números de tipo double (o integer, o el que sea..), en realidad NO SE PUEDEN ELIMINAR DATOS.

Los arreglos tienen una longitud fija de elementos, no se puede ni añadir ni quitar elementos. Los arreglos son estructuras estáticas

Se puede poner a valor 0 un dato en concreto, pero es que el 0 en realidad es un número tan válido como cualquier otro.

Otra cosa es que en lugar de un arreglo, se trate de una estructura dinámica, como las clase Vector, List, etc...


Por eso, si tienes un enunciado del ejercicio, déjanos verlo a ver si entendemos mejor qué es lo que se pide.
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
sin imagen de perfil
Val: 12
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Eliminar un número determinado de un arreglo

Publicado por ana (4 intervenciones) el 20/03/2020 15:47:40
Tengo este metodo, pero solo elimina el ultimo numero del arreglo, y lo que yo quisiera saber es como eliminar uno numero determinado, ejemplo, si mi arreglo es de 5 elementos, y en esos 5 elementos tengo los numero: 4, 3, 10, 8, 7. ¿como puedo eliminar el numero 10 y que al momento de volver a mostrar los numero, solo aparezca el: 4, 3, 8, 7?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public Arreglo()
    {
        datos = new double[0];
    }
 
 
public void Eliminar()
    {
        //Respaldar
        double temp[] = new double[datos.length];
        int c;
        for(c=0; c<datos.length; c++);
        {
            temp[c] = datos[c];
        }
        //Rendimensionar el arreglo
        datos = new double[datos.length - 1];
 
        //Recuperar los numeros respaldados
        for(c=0;c<temp.length-1; c++);
        {
            datos[c] = temp[c];
        }
    }
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 Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Eliminar un número determinado de un arreglo

Publicado por Franklin (179 intervenciones) el 20/03/2020 16:52:03
Cuando defines un arreglo así double temp[] = new double[datos.length];,
No puedes eliminar una de sus posiciones porque como dice Kabuto es Estatica, lo que podrías hacer es buscar el indice al cual pertenece el valor buscado ( en tu caso el indice del numero 10, el cual su indice dentro del arreglo es 2).

una vez teniendo el indice puedes volver 0 su valor y podrías considerarlo como "eliminado", eliminado simbolico o lógico.

Para borrar una posición podrías usar un ArrayList como alternativa

ArrayList<Double> temp = new ArrayList();

añades los valores con add

temp.add(1.0);
temp.add(5.0);
temp.add(12.0);
y quitas un valor con el metodo remove();

temp.remove(index);
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
sin imagen de perfil
Val: 12
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Eliminar un número determinado de un arreglo

Publicado por ana (4 intervenciones) el 20/03/2020 17:23:29
Gracias por su ayuda
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Eliminar un número determinado de un arreglo

Publicado por Kabuto (1381 intervenciones) el 21/03/2020 11:48:13
Vale.
Parecido a ese código, se puede hacer enfocándolo de otra manera.

- Creamos un array temporal, pero una posición más pequeño que el array original
- En el temporal, copiamos todos los valores del original, excepto el que está en la posición que queremos eliminar.
- Tras hacer la copia, le asignamos al array original la referencia del array temporal.

Y así ya queda el array original con la posicion eliminada.

Un ejemplo rápido:
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
public class Arreglo {
 
	static double[] arreglo;
 
	public static void main(String[] args) {
 
		//Inicializamos arreglo con 10 valores y los mostramos en pantalla
		System.out.println("Valores existentes:");
		arreglo = new double[10];
		for (int i = 0; i < arreglo.length; i++) {
			arreglo[i] = i;
			System.out.print(arreglo[i] +"  ");
		}
		System.out.println("\nEl arreglo tiene " + arreglo.length + " posiciones.");
 
		System.out.print("\nElija una posicion a eliminar entre 0 y 9: ");
		Scanner teclado = new Scanner(System.in);
		int pos = teclado.nextInt();
		teclado.close();
 
		//Eliminamos posicion
		eliminarPosicion(pos);
 
		//Mostramos como ha quedado el arreglo
		System.out.println("\nAhora el arreglo tiene " + arreglo.length + " posiciones.");
		for (int i = 0; i < arreglo.length; i++)
			System.out.print(arreglo[i] +"  ");
	}
 
	static void eliminarPosicion(int pos) {
 
		//Creamos nuevo arreglo con longitud reducida en 1
		double[] temp = new double[arreglo.length - 1];
 
		/*
		 * En este nuevo arreglo, copiamos todos los valores EXCEPTO la posicion indicada.
		 * Como los arreglos tienen distintas longitudes, usaremos dos indices distintos
		 */
		int indTemp = 0, indArreglo = 0;
		while (indTemp < temp.length && indArreglo < arreglo.length) {
			if (indArreglo == pos) //Esta posicion NO la copiamos, la saltamos.
				indArreglo++; //Para saltarla, solo aumenta el indice del arreglo principal
			else {
				//Esta posicion si la vamos a copiar en el nuevo arreglo
				temp[indTemp] = arreglo[indArreglo];
				//Tras copiar, aumentan ambos indices
				indTemp++;
				indArreglo++;
			}
		}
 
		//Elementos copiados excepto la posicion indicada. Asignamos el nuevo arreglo
		arreglo = temp;
	}
 
}

Y en pantalla obtenemos este resultado:
1
2
3
4
5
6
7
8
Valores existentes:
0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  8.0  9.0
El arreglo tiene 10 posiciones.
 
Elija una posicion a eliminar entre 0 y 9: 4
 
Ahora el arreglo tiene 9 posiciones.
0.0  1.0  2.0  3.0  5.0  6.0  7.0  8.0  9.0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Eliminar un número determinado de un arreglo

Publicado por Franklin (179 intervenciones) el 21/03/2020 14:06:02
Interesante forma de plantear la solución Kabuto, en caso de que quiera actualizar el arreglo original podría reasignar su dimension y valores asignandole al arreglo Temp[]. de igual forma buena respuesta (+1)
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

Eliminar un número determinado de un arreglo

Publicado por Costero (148 intervenciones) el 21/03/2020 15:35:55
Un poco mas simple:

1
2
3
4
5
6
7
8
9
10
11
static void eliminarPosicion(int pos) {
    double[] temp = new double[arreglo.length - 1];
 
    int j = 0;
    for (int i = 0; i < arreglo.length; i++) {
        if(i != pos) {
            temp[j++] = arreglo[i];
        }
    }
    arreglo = temp;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar