Autor Tema: CU0076B método fill de la clase Arrays para modificar un array java  (Leído 5430 veces)

momo

  • Principiante
  • **
  • Mensajes: 64
    • Ver Perfil
Escribe un fragmento de código utilizando esta signatura del método fill y comprueba sus resultados.



Código: [Seleccionar]
import java.util.*;
public class MetodoFill
{
    public static void main(String[] args)
    {
        int primeraArray[]={2,3,4,5};
        int segundaArray[]={3,40,51,12};

        for(int i=0;i<primeraArray.length;i++)
        {
            System.out.println("Primera Raiz : "+primeraArray[i]);
        }
        System.out.println("-----------------------------------");
        for(int i=0;i<segundaArray.length;i++)
        {
            System.out.println("Segunda Raiz : "+segundaArray[i]);
        }
        System.out.println("Tienen Contenido iguales :"+(primeraArray==segundaArray));
        System.out.println("Son los Mismos Objetos :"+Arrays.equals(primeraArray,segundaArray));

        System.out.println(" Aplicando Metodo fill(int[ ] a, int fromIndex, int toIndex, int val)");
        Arrays.fill(primeraArray,2,4 , 2);
        for(int objeto:primeraArray)
        {
       
            System.out.println(objeto);
           

        }

    }
}


« Última modificación: 05 de Octubre 2014, 11:36 por Alex Rodríguez »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:CU0076B
« Respuesta #1 en: 04 de Octubre 2014, 22:23 »
Hola momo

Tu ejercicio CU00676B hace lo estipulado, utilizar el método fill de la clase Arrays para modificar un array.
Correcto

Este ejercicio parece sencillo.
Quiero hacerte una pregunta.
Supón que has de hacer un programa donde has de usar este método 'fill'
La pregunta es: ¿En que caso de la vida real o en un caso inventado por ti usarías este método para realizar el trabajo?

Si se te ocurre un caso, me doy por satisfecho, no hace falta ni que me lo digas.
En caso contrario, contesta y te propondré un ejercicio para que lo hagas.

Saludos

momo

  • Principiante
  • **
  • Mensajes: 64
    • Ver Perfil
Re:CU0076B método fill de la clase Arrays para modificar un array java
« Respuesta #2 en: 05 de Octubre 2014, 19:26 »
Bueno algo inventado por mi :


Supongamos que en una tienda donde vendan cualquier tipo de electrodoméstico
al mes ellos hacen un  inventario para  saber que tipos de electrodoméstico  les queda
una ves que el inventario se aya realizado es vaciado al sistema. para guardarlo en una base de datos

Por error del trabajador ingresa al sistema una cantidad errónea de cierto  equipo electrodoméstico
cuando el jefe va revisar y se da cuenta que esa cantidad no va con el inventario realizado le pide a su trabajador
que modifique la cantidad al electrodoméstico . bueno hay es donde entra el método fill

Metodo fill(int[ ] a, int fromIndex, int toIndex, int val)").

donde el trabajador en el sistema buscara el nombre del electrodoméstico (supongamos  que sea la posición de una ArraysList).
y le modifica el la cantidad de electrodoméstico( que seria el valor que esta almacenado en esa posición).


Ejemplo


Que el nombre de la raíz se llame electrodoméstico.

que en la posición[5] se almacene todos los televisores sea de cualquier marca  el trabajador
debe modificar la cantidad de televisores entonces se posiciona allí a través del método fill
y le modifica el valor que esta en esa posición


Bueno ese es un Ejemplo. tal vez puede ser de la vida real.
pero fue inventado por mi que fue lo que se me vino a la mente ahorita con respecto a ese método no se si estoy equivocado en la
forma en que pienso en que se le debería dar el uso a ese método.

bueno espero tu opinión amigo toni_apr

muchas gracias ..

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:CU0076B método fill de la clase Arrays para modificar un array java
« Respuesta #3 en: 05 de Octubre 2014, 21:17 »
Hola momo
El ejemplo que has inventado, es válido, pero tal como tú dices se trataría de modificar un elemento del array con el nuevo valor y para eso no hace falta el método 'fill'
arrayDeEnteros [posicionEscogida] = nuevoValorInt

El método fill, recuerda se usa para modificar varios elementos del array al mismo tiempo.

Te voy a poner un ejemplo donde habrás de usar el método fill
Citar
Ejercicio Zombis H
Ayer se inauguró un nuevo hospital. Tiene exactamente 100 habitaciones, aunque no tiene pacientes los tres médicos residentes tienen asignadas las habitaciones de esta forma:
Dr. Perez habitaciones de la 1 a la 30
Dr. Gomez habitaciones de la 31 a la 66
Y el Dr. Chaves las habitaciones de la 67 a la 100

Diseña un programa que presente por pantalla la información emparejada de habitación + Dr. asignado, para todas las habitaciones.

Después de hacer esto, te informan de que ha habido un desastre en la ciudad. Unos zombis están atacando a la población, y a todos los afectados los envían a nuestro nuevo hospital.

Por lo visto los zombis atacan de tres formas distintas:
1ª Apalizan a su víctima a patadas y puñetazos hasta que cae al suelo por el dolor. Al caer, pierden su interés por la víctima y van a por otra.
2ª Enbadurnan al sujeto con pegamento inmovilizándole brazos y piernas, cuando este cae al suelo al perder el equilibrio lo abandonan y van a por otra víctima.
3ª Asustan a las personas con sus rostros desencajados y haciendo muecas grotescas hasta que la víctima sufre convulsiones espasmódicas y también cae al suelo por que no se tiene en pie. Tras lo cual los zombis buscan otra víctima.

Ahora en nuestro hospital en lugar de asignar las habitaciones a los médicos las asignan a los tres tipos de ataques:
Paliza, pegamento y susto.

Tu trabajo consiste ahora en presentar por pantalla la información emparejada de habitación + ataque siguiendo esta distribución
Habitaciones 15 a 44 para las palizas
Habitaciones 75 a 92 para el pegamento
Y el resto de las habitaciones para el susto.

Que no te pillen los zombis.

Este es un buen reto para el uso del método fill de la clase Arrays.
Una pista para el diseño. Nuestro array no contiene números, sino textos (doctores o ataques).

Saludos

momo

  • Principiante
  • **
  • Mensajes: 64
    • Ver Perfil
Re:CU0076B método fill de la clase Arrays para modificar un array java
« Respuesta #4 en: 06 de Octubre 2014, 05:54 »
Hola Amigo Toni Te dejo Adjunto un Archivo donde Elabore el ejercicio que me diste

Si lo vez .. de mi  parte creo que esta muy recargado el método main

Ahora mi pregunta seria  Se podría crear un método en cada clase (Ataques,Doctor)  para realizar el procedimiento donde se le asigne el nombre a del doctor a cada habitación de igual manera para  los Ataques de Zombi.

 Tenia Pensado en realizar  de esa manera el Ejercicio pero no lo hice  por que no  se si llegue  hacer  una  mala practica de programación .

Espero Y veas el Ejercicio 

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:CU0076B método fill de la clase Arrays para modificar un array java
« Respuesta #5 en: 06 de Octubre 2014, 21:28 »
Hola momo
Tu ejercicio es una construcción donde demuestras ímpetu y también conocimiento de los métodos del API de java (copyOf y copyOfRange). Y eso siempre es encomiable.
Además presentas un menú amigable y explicativo. OK

Pero, pero. Siempre hay un pero.
En la asignación de ataques en el array habitaciones ha habido deslices en el elemento 75 y los elementos 93 a 100.

En el main usas 4 arrays de texto, dos originales y dos copias.
Para presentar los valores de los originales, vuelcas los valores en las copias y muestras los valores de las copias.
Todo esto que haces, es lícito. Pero me parece que usas mucha artillería para enemigo pequeño.
Un array de Strings habría sido suficiente, cambiando el valor de sus elementos según conveniencia, una vez doctores y otra ataques.

Además. Creas dos clases Doctor y Ataques, únicamente para guardar un String, el nombre del doctor o del ataque.
A mi me parece un uso de recursos desproporcionado.
En lugar de involucrar a una clase para rellenar un array
Arrays.fill(doctor,1,31,doctores.getDrPerez())
bastaría con una cadena de texto.
Arrays.fill(doctor,1,31,"Dr. Perez")

Espero que el resultado que presentas sea a causa del ímpetu con que te has metido en el ejercicio.
Piensa que aunque todo sea válido mientras se consiga el resultado deseado, en java se presume de crear código sencillo a la vez que eficiente.

Así pues. Como ejercicio, está bien. Pero en próximas entregas espero que hagas gala de la máxima eficiencia con el código estrictamente necesario. Eso también forma parte del aprendizaje.

Saludos y adelante.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".