Anuncios

Bienvenidos sean a este post, hace un tiempo atras cuando hablamos de variables en este post mencionamos a los arrays como un tipo especial de variable pero en realidad no son tan asi y ahora veremos porque.

Anuncios

Un array, arreglo o una matriz, dependiendo del autor, es un tipo especial de variable porque a diferencia de sus hermanas las variables nos permite almacenar mas de un dato en la misma, esto lo hace a traves de una ordinal o posicion dandonos la posibilidad de poder recuperar dicho dato simplemente en base a la posicion de la misma pero en que puede resultarnos practico esto? Vamos a pensar el siguiente ejemplo:

  • Tenemos que crear 100 enemigos en pantalla
  • Tenemos que almacenar 100 puntajes
Anuncios

En el primer caso si tuvieramos que crear cada uno de los objetos que representarian a los enemigos deberemos hacer algo asi:

Enemigo enemigo1;
Enemigo enemigo2;
...
Enemigo enemigo99;
Enemigo enemigo100;
Anuncios

Como pueden observar debemos usar 100 lineas para cada uno de los objetos que representaran a nuestros enemigos, si bien esto es poco practico se puede utilizar pero lo recuerdo es poco practico, en cambio si pasamos al tema de los puntajes obtendremos algo como esto:

int topPuntaje1;
int topPuntaje2;
...
int topPuntaje99;
int topPuntaje100;
Anuncios

Al igual que en el caso anterior es viable pero poco practico y en este caso vamos a suponer que se modifico un punto alto y debemos asignarlo se podria hacer de esta manera:

topPuntaje100 = topPuntaje99;
topPuntaje99 = topPuntaje98;
topPuntaje98 = topPuntaje97;
...
topPuntaje1 = puntaje;
Anuncios

Si se dan cuenta no solamente tendremos 300 lineas innecesarias sino que ademas nos volveran engorroso el codigo a la hora de volver a trabajar con el, para evitar esto justamente utilizamos los arrays ya que podemos usar cien posiciones en lugar de cien variables/objetos, comentemos su sintaxis la cual en general es:

tipoDato [] nombreArray;
tipoDato nombreArray[];
Anuncios

Pueden usar cualquiera de las dos sintaxis y como pueden ver siempre habra tres valores constantes el tipo de dato, el nombre del array y los dos corchetes, el unico que puede variar su posicion son los corchetes pero estos no pueden faltar porque son los que realmente indican que la variable es un array, otra particularidad de los arrays que al igual que una variable no solamente acepta tipos de datos primitivos sino tambien las clases propias del lenguaje como las generadas por nosotros, veamos algunos ejemplos:

int topPuntajes[];
String [] nombres;
Enemigo [] enemigos;
Anuncios

Como pueden ver estos son solo algunos ejemplos pero son solamente la declaracion de un array al momento de definirlo se debe hacer de la siguiente manera:

nombreArray = new tipoDato[tamaño];
Anuncios

Si observan en realidad el array es un objeto y nosotros por medio de la palabra new le definiremos su espacio en memoria, el tipo de dato debe ser el mismo al que creamos el array y tamaño es la cantidad de elementos que almacenaremos, vamos a hacer los arrays del ejemplo mencionado anteriormente:

int [] topPuntajes = new int[100];
Enemigo [] enemigos = new Enemigo[100];
Anuncios

Por ejemplo si quisieramos cargar puntajes en nuestro array simplemente podemos hacerlo de esta forma:

topPuntajes[0] = 1000;
topPuntajes[1] = 200;
topPuntajes[2] = 3000;
Anuncios

Y asi continuaremos hasta completar todas las posiciones de nuestro array y despues para poder acceder es simplemente llamando al array con la posicion, por ejemplo:

System.out.println(topPuntajes[2]); -> Mostraria en consola el valor 3000;
Anuncios

Como pueden ver es muy simple tanto almacenar como recuperar la informacion, para entender un poco mejor el concepto vamos a crear un proyecto donde lo pondremos en practica, para ello habran Android Studio y generen un nuevo proyecto con los siguientes datos:

  • Dispositivos: Phone and Tablet
  • Actividad: Empty Activity
  • Nombre: Arreglos
  • Nombre de paquete: org.example.arreglos
  • API Minimo: API 14 (Android 4.0)
Anuncios

Una vez generado nuestro proyecto procederemos a modificar al archivo activity_main.xml con el siguiente codigo:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/valor"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Ingresa un valor"
        android:inputType="number" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="AgregarValor"
        android:text="Agregar Valor"/>

    <TextView
        android:id="@+id/resultado"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
Anuncios

Este es un codigo simple donde establecemos como layout a LinearLayout y agregamos tres elementos:

  • EditText, para ingresar los valores
  • Button, para llamar a la funcion encargada de esto
  • TextView para ver los resultados.

En el caso del EditText le agregamos un id para luego identificarlo en nuestro codigo, tambien le pusimos que es de tipo number para que nos muestre el teclado numerico, en Button solo agregamos el evento onClick para asignarlo a la funcion AgregarValor, por ahora devolvera un error, y el texto para mostrar en el boton, por ultimo el TextView tendra un id llamado resultado para al igual que el EditText podamos llamarlo en el codigo de Java, pasemos al codigo de nuestra clase MainActivity:

MainActivity.java

package org.example.arreglos;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private EditText valor;
    private TextView respuesta;
    private int ciclo = 0;
    private int [] valores = new int[5];
    private int total;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        respuesta = (TextView) findViewById(R.id.resultado);
        valor = (EditText) findViewById(R.id.valor);
    }

    public void AgregarValor(View vista){
        valores[ciclo] = Integer.parseInt(valor.getText().toString());
        total += valores[ciclo];
        ciclo++;
        if (ciclo==5){
            for(int a=0; a < ciclo; a++){
                respuesta.setText(respuesta.getText().toString()
                        + "\n" + "valores[" + a + "]= "
                        + valores[a]);
            }
            respuesta.setText(respuesta.getText().toString()
                    + "\n" + "Total = "
                    + total);
        }
    }
}
Anuncios

Este codigo parece complejo pero no lo va a ser tanto, vamos a ver el primer bloque que son los objetos/variables:

    private EditText valor;
    private TextView respuesta;
    private int ciclo = 0;
    private int [] valores = new int[5];
    private int total;
Anuncios

Primero crearemos un objeto de tipo EditText y lo llamaremos valor, el siguiente sera de tipo TextView y lo llamaremos respuesta, despues una variable de tipo int llamada ciclo a la cual iniciaremos con el valor cero, luego crearemos un array de tipo int llamado valores al cual tambien definiremos con un tamaño de cinco posiciones y por ultimo una variable de tipo int llamada total, nuestro siguiente paso sera modificar el metodo onCreate:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        respuesta = (TextView) findViewById(R.id.resultado);
        valor = (EditText) findViewById(R.id.valor);
    }
Anuncios

En este caso primero setearemos a respuesta, en el cual usaremos a findViewById para enlazarlo al elemento resultado, luego hacemos exactamente lo mismo pero para valor, con el primero podremos mostrar un resultado en pantalla y con el primero podremos obtener el valor que ingresemos, nuestro siguiente bloque es este metodo:

    public void AgregarValor(View vista){
        valores[ciclo] = Integer.parseInt(valor.getText().toString());
        total += valores[ciclo];
        ciclo++;
        if (ciclo==5){
            for(int a=0; a < ciclo; a++){
                respuesta.setText(respuesta.getText().toString()
                        + "\n" + "valores[" + a + "]= "
                        + valores[a]);
            }
            respuesta.setText(respuesta.getText().toString()
                    + "\n" + "Total = "
                    + total);
        }
    }
Anuncios
Anuncios

Este sera el metodo que asignamos en onClick del layout, nuestro siguiente paso sera establecer un valor en valores y la posicion la informaremos con ciclo, para asignar el valor usaremos a parseInt de la clase Integer y esto es debido a que lo obtenido de valor por medio de getText siempre sera de tipo Editable, no string o texto, y por este motivo luego usamos el metodo toString para convertirlo a string y nos permite que parseInt lo transforme en tipo int lo cual nos permitira asignarlo a la posicion del array, despues incrementaremos el valor de total sumandole su valor actual al nuevo valor obtenido de la variable valor, nuestro siguiente paso sera increamentar a ciclo en uno, despues vendra un condicional donde verifica si ciclo es igual a cinco, en caso de ser falso lo ignorara, esto es debido a que el valor se incrementara cada vez que pulsemos el boton, en cambio si es verdadero usara un bucle for que contara de cero a cuatro en una variable a, en el cuerpo del bucle setearemos el valor de respuesta, recuerden que es el enlace con resultado del layout, lo primero que haremos es recuperar el valor actual de respuesta por medio de getText y a su vez lo convertimos en string por medio de toString, le concatenamos un modificador de nueva linea, lo siguiente es volver a concatenar un texto para identificar que es el array valores y la posicion por medio de a, para finalmente concatenar el valor de la posicion en valores, una vez terminado el ciclo agregaremos a todo el contenido en respuesta el valor de total y hacemos algo parecido a lo anterior para identificar que es total, con esto tenemos nuestra aplicacion terminada si lo compilamos y probamos debera funcionar como se ve en el siguiente video

Anuncios

Es un ejemplo simple donde vemos como ingresamos cinco valores, cuando se cumple la condicion no solamente nos muestra cada una de las posiciones del array sino que tambien nos muestra la suma de cada una de los valores ingresados.

Anuncios

En resumen, hoy hemos visto que son los arrays, como se declaran, como se definen, las distintas formas de poder crearlas, un ejemplo donde pudimos crear un array y como pudimos asignar y recuperar sus datos, tengan en cuenta que esta es la forma mas basica de trabajar y tambien la mas comun, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00