Autor Tema: CU00676B Clase Arrays del api Java. Métodos equals (comparar), copyOf (copiar)  (Leído 3983 veces)

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Buenas, adjunto ejercicio usando fill con indices inicial y final (exclusivo), era solo una práctica pero ahi va igual por si a alguien le aporta.

Código: [Seleccionar]

import java.util.Arrays;

//uso metodo copyOf clase Arrays
public class FillConIndices{
    public static void main (String [] args){
        int [] miArray1 = { 2, -4, 3, -7};

        for ( int miNumero : miArray1 ) {System.out.println("miArray1 " + miNumero ); }

        System.out.println("");

        int [] otroArray = {1, 2, 4, 8};

        for ( int miNumero : otroArray ) { System.out.println("otroArray " + miNumero ); }

        System.out.println("Son mismo objeto?   " + (miArray1 == otroArray) );
        System.out.println("Tienen mismo contenido?   " + Arrays.equals(miArray1, otroArray) );

        //Copiamos el array utilizando copyOf de la clase Arrays

        otroArray = Arrays.copyOf(miArray1, miArray1.length + 2);

        for(int i = 0; i < otroArray.length; i++){
            if( otroArray[i] < 0 ){ Arrays.fill (otroArray, i, i + 1, 33);}
        }

        for ( int miNumero : otroArray ) { System.out.println ("otroArray " + miNumero ); }
        System.out.println("Son mismo objeto?   " + (miArray1 == otroArray) );
        System.out.println("Tienen mismo contenido?   " + Arrays.equals(miArray1, otroArray) );
    }
}


« Última modificación: 06 de Abril 2015, 23:39 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Hola Lorenzo, hay una parte que quizás sea útil que la aclares para otras personas que vean el código:

Código: [Seleccionar]
otroArray = Arrays.copyOf(miArray1, miArray1.length + 2);

        for(int i = 0; i < otroArray.length; i++){
            if( otroArray[i] < 0 ){ Arrays.fill (otroArray, i, i + 1, 33);}
        }

¿Serías capaz de explicar qué es lo que ocurre cuando se ejecuta el bucle y por qué después de ejecutado el bucle el contenido de otroArray es

otroArray 2
otroArray 33
otroArray 3
otroArray 33
otroArray 0
otroArray 0

?

Nota: hay un detalle en el mátodo fill según indica el api de java:

public static void fill(int[] a, int fromIndex, int toIndex, int val)
    fromIndex - the index of the first element (inclusive) to be filled with the specified value
    toIndex - the index of the last element (exclusive) to be filled with the specified value

Salu2

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Si claro, básicamente he creado el otroArray como copyOf de miarray pero con dos posiciones en 0 final de más.
Despues, for(int i = 0; i < otroArray.length; i++) recorro el nuevo array hasta su length.

if( otroArray [ i ] < 0 ){ Arrays.fill (otroArray, i, i + 1, 33);}

Y aquí la condición if compara el valor que guarda la referencia otroArray[posición], si es menor a cero, Oses negativo, coloca con el Arrays.fill el valor 33 sustituyendo, para lograr q solo coloque una poicion ese valor, se usa los parámetros intermedios, desde la posición i ( comparada en el if, la que queremos cambiar) hasta i+1 que como tu indicas es exclusivo, no la coge, luego solo cambia la posición i.

Ejemplo

Para i = 1: otroArray [ 1] = -4. Esto es menor a 0 y entra en el if
    Arrays.fill ( otroArray, 1 , 2, 33) excluye posicion dos, luego solo cambia la 1( que es -4) por un 33

Espero sirva la explicacion Ogramar . Saludos
« Última modificación: 05 de Abril 2015, 18:06 por Lorenzo31 »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Sí, gracias por la explicación, creo que le puede ser útil a quien lea el código para entender mejor lo que hace.

Salu2

 

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".