馃摍 Arrays - Java#
1 - Instalar Java
2 - Ejemplos Array
3 - Ejemplos ArraList
4 - Ejercicios
Instalar Java#
Descargar el kernel
Ejecuta la siguiente celda. No la modifiques!
%%sh
wget -q https://github.com/SpencerPark/IJava/releases/download/v1.3.0/ijava-1.3.0.zip
unzip -q ijava-1.3.0.zip
python install.py
wget -qO- https://gist.github.com/SpencerPark/e2732061ad19c1afa4a33a58cb8f18a9/archive/b6cff2bf09b6832344e576ea1e4731f0fb3df10c.tar.gz | tar xvz --strip-components=1
python install_ipc_proxy_kernel.py --kernel=java --implementation=ipc_proxy_kernel.py
Installed java kernel into "/usr/local/share/jupyter/kernels/java"
e2732061ad19c1afa4a33a58cb8f18a9-b6cff2bf09b6832344e576ea1e4731f0fb3df10c/install_ipc_proxy_kernel.py
e2732061ad19c1afa4a33a58cb8f18a9-b6cff2bf09b6832344e576ea1e4731f0fb3df10c/ipc_proxy_kernel.py
Moving java kernel from /usr/local/share/jupyter/kernels/java...
Wrote modified kernel.json for java_tcp in /usr/local/share/jupyter/kernels/java_tcp/kernel.json
Installing the proxy kernel in place of java in /usr/local/share/jupyter/kernels/java
Installed proxy kernelspec: {"argv": ["/usr/bin/python3", "/usr/local/share/jupyter/kernels/java/ipc_proxy_kernel.py", "{connection_file}", "--kernel=java_tcp"], "env": {}, "display_name": "Java", "language": "java", "interrupt_mode": "message", "metadata": {}}
Proxy kernel installed. Go to 'Runtime > Change runtime type' and select 'java'
/content/install.py:164: DeprecationWarning: replace is ignored. Installing a kernelspec always replaces an existing installation
install_dest = KernelSpecManager().install_kernel_spec(
Instrucciones para activar el kernel
Dirigite a Entorno de ejecuci贸n > Cambiar tipo de entorno de ejecuci贸n > Elige la opci贸n Java > Da click en Guardar
Importar Librerias#
// Libreria para usar potencia y otras funciones matem谩ticas
import java.lang.Math;
// Libreria para usar el objeto Scanner (leer variables)
import java.util.Scanner;
// Libreria para usar ArrayList
import java.util.ArrayList;
Ejemplos Array#
Un array es una estructura de datos que nos permite almacenar una gran cantidad de datos de un mismo tipo. Su tama帽o es fijo.
Su sintaxis b谩sica es la siguiente:
Tambien es posible declarar y crear un array en una sola linea:
Ejemplo 1.
Declarar y crear un array de tama帽o 6.
// Declaraci贸n
int[] numerosEnteros;
// Creaci贸n
numerosEnteros = new int[6];
Cuando se construye un array n煤merico todos los elementos se inicializan a 0.
Nota. Recordemos que los indices de un array inician en 0 y terminan en N - 1, siendo N el tama帽o o n煤mero de elementos del array.
System.out.println("Posici贸n 0: " + numerosEnteros[0]);
System.out.println("Posici贸n 1: " + numerosEnteros[1]);
System.out.println("Posici贸n 2: " + numerosEnteros[2]);
Posici贸n 0: 0
Posici贸n 1: 0
Posici贸n 2: 0
Para obtener el tama帽o del array podemos usar la instancia length:
System.out.println("Tama帽o del array: " + numerosEnteros.length);
Tama帽o del array: 6
for (int i=0; i<numerosEnteros.length; i++) {
System.out.println("Posici贸n " + i + ": " + numerosEnteros[i]);
}
Posici贸n 0: 0
Posici贸n 1: 0
Posici贸n 2: 0
Posici贸n 3: 0
Posici贸n 4: 0
Posici贸n 5: 0
Si intemos acceder a la posici贸n 6 nos debe arrojar un error (el indice no existe o superar el tama帽o definido):
System.out.println("Posici贸n 6: " + numerosEnteros[6]);
---------------------------------------------------------------------------
java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 6
at .(#22:1)
Ejemplo 2.
Utilizando el array numerosEnteros ingresa 6 numeros enteros.
Nota. Para ingresar o modificar un elemento de un array se utilizan corchetes [ ] y dentro de ellos el indice correspondiente.
// Al indice 0 del array se le asigna el valor 10
numerosEnteros[0] = 10;
// Al indice 1 del array se le asigna el valor 20
numerosEnteros[1] = 20;
// Al indice 2 del array se le asigna el valor 30
numerosEnteros[2] = 30;
// Al indice 3 del array se le asigna el valor 40
numerosEnteros[3] = 40;
// Al indice 4 del array se le asigna el valor 50
numerosEnteros[4] = 50;
// Al indice 5 del array se le asigna el valor 60
numerosEnteros[5] = 60;
for (int i=0; i<numerosEnteros.length; i++) {
System.out.println("Posici贸n " + i + ": " + numerosEnteros[i]);
}
Posici贸n 0: 10
Posici贸n 1: 20
Posici贸n 2: 30
Posici贸n 3: 40
Posici贸n 4: 50
Posici贸n 5: 60
Ejemplo 3
Crear un array con 4 n煤meros decimales.
float[] numerosDecimales = new float[4];
numerosDecimales[0] = 1.5f;
numerosDecimales[1] = 3.5f;
numerosDecimales[2] = 7.5f;
numerosDecimales[3] = 10.5f;
for (int i=0; i<numerosDecimales.length; i++) {
System.out.println("Posici贸n " + i + ": " + numerosDecimales[i]);
}
Posici贸n 0: 1.5
Posici贸n 1: 3.5
Posici贸n 2: 7.5
Posici贸n 3: 10.5
Para modificar un valor debemos especificar el indice y su nuevo valor:
numerosDecimales[3] = 55.5f;
System.out.println("Posici贸n 4: " + numerosDecimales[3]);
Posici贸n 4: 55.5
Ejemplo 4
Crear un array con 3 datos de tipo booleano.
boolean[] arrayBoolean = new boolean[3];
arrayBoolean[0] = true;
arrayBoolean[1] = false;
arrayBoolean[2] = true;
for (int i=0; i<arrayBoolean.length; i++) {
System.out.println("Posici贸n " + i + ": " + arrayBoolean[i]);
}
Posici贸n 0: true
Posici贸n 1: false
Posici贸n 2: true
Si intentamos ingresar un tipo de dato distinto a booelan en cualquier posici贸n del array nos arroja error (tipos de datos incompatibles):
arrayBoolean[2] = 12.6;
| arrayBoolean[2] = 12.6;
incompatible types: double cannot be converted to boolean
arrayBoolean[0] = 'H';
| arrayBoolean[0] = 'H';
incompatible types: char cannot be converted to boolean
Ejemplo 5
Realizar un array con tres nombres de sus amigos.
String[] nombresAmigos = new String[3];
nombresAmigos[0] = "Juan";
nombresAmigos[1] = "Felipe";
nombresAmigos[2] = "Maria";
for (int i=0; i<nombresAmigos.length; i++) {
System.out.println("Posici贸n " + i + ": " + nombresAmigos[i]);
}
Posici贸n 0: Juan
Posici贸n 1: Felipe
Posici贸n 2: Maria
Ejemplo 6
Realizar un programa que pida al usuario 5 numeros de tipo double y los almacene en un array.
Scanner scn = new Scanner(System.in);
double numeroIngresado;
double[] arrayDouble = new double[5];
for (int i=0; i<arrayDouble.length; i++){
System.out.print("Ingrese un n煤mero en la posici贸n " + i + ": ");
numeroIngresado = scn.nextDouble();
arrayDouble[i] = numeroIngresado;
}
Ingrese un n煤mero en la posici贸n 0: 56.7
Ingrese un n煤mero en la posici贸n 1: 1.6
Ingrese un n煤mero en la posici贸n 2: 45.6
Ingrese un n煤mero en la posici贸n 3: 3.1
Ingrese un n煤mero en la posici贸n 4: 3.0
for (int i=0; i<arrayDouble.length; i++){
System.out.println("Posici贸n " + i + ": " + arrayDouble[i]);
}
Posici贸n 0: 56.7
Posici贸n 1: 1.6
Posici贸n 2: 45.6
Posici贸n 3: 3.1
Posici贸n 4: 3.0
Ejemplo 7
Realiza un programa que pida al usuario que ingrese un numero n de nombres.
n tambi茅n debe ser ingresado por el usuario.
// Declaraci贸n de variables
Scanner scnString = new Scanner(System.in);
Scanner scnInteger = new Scanner(System.in);
String nombreIngresado;
int n;
// Pedir n煤mero n de nombres
System.out.print("Hola, cu谩ntos nombres deseas ingresar?: ");
n = scnInteger.nextInt();
// Crear el array de tama帽o n
String[] nombres = new String[n];
// Leer nombres
for (int i=0; i<nombres.length; i++){
System.out.print("Ingresa el nombre de la posici贸n " + i + ": ");
nombreIngresado = scnString.nextLine();
nombres[i] = nombreIngresado;
}
Hola, cu谩ntos nombres deseas ingresar?: 3
Ingresa el nombre de la posici贸n 0: Juan
Ingresa el nombre de la posici贸n 1: Pedro
Ingresa el nombre de la posici贸n 2: Maria
for (int i=0; i<nombres.length; i++){
System.out.println("Nombre en pos " + i + ": " + nombres[i]);
}
Nombre en pos 0: Juan
Nombre en pos 1: Pedro
Nombre en pos 2: Maria
Ejemplo 8
Crea un array de enteros con los valores 5, 6, 1, 1, 2, 9, 12.
Recordemos que la sintaxis para arrays con valores iniciales es:
int[] arrayEnteros = {5, 6, 1, 1, 2, 9, 12};
System.out.println("Tama帽o del array: " + arrayEnteros.length);
Tama帽o del array: 7
Para acceder a los elementos se hace igual que los arrays vistos anteriormente:
System.out.println("Posici贸n 1: " + arrayEnteros[1]);
System.out.println("Posici贸n 4: " + arrayEnteros[4]);
Posici贸n 1: 6
Posici贸n 4: 2
Tampoco es posible agregar un tipo de dato distinto a int o agregar otro n煤mero:
arrayEnteros[1] = 45.5
| arrayEnteros[1] = 45.5
incompatible types: possible lossy conversion from double to int
arrayEnteros[7] = 5;
---------------------------------------------------------------------------
java.lang.ArrayIndexOutOfBoundsException: Index 7 out of bounds for length 7
at .(#69:1)
Ejemplo 9
Crear una funci贸n que valide si un array de enteros (ingresado por el usuario) de tama帽o 4 contiene el numero \(0\).
La funci贸n debe retornar true en caso de que encuentre un \(0\).
// Declaraci贸n de variables
Scanner scn = new Scanner(System.in);
int numeroIngresado;
boolean resultado;
int[] arrayEnteros = new int[4];
// Funci贸n
public static boolean validarArray(int[] array) {
int bandera = 0;
for (int i=0; i<array.length; i++) {
if (array[i] == 0) {
bandera = 1;
}
}
if (bandera == 1) {
return true;
} else {
return false;
}
}
// Inicio del programa //
// Pedir n煤meros
for (int i=0; i<arrayEnteros.length; i++) {
System.out.print("Ingrese n煤mero en pos " + i + ": ");
numeroIngresado = scn.nextInt();
arrayEnteros[i] = numeroIngresado;
}
// Llamar la funci贸n
resultado = validarArray(arrayEnteros);
// Imprimir resultado
System.out.print("\nEl array ingresado contiene ceros?: " + resultado);
// Prueba con array fijo //
int[] arrayEnteros2 = {4, 5, 6, 7};
boolean resultado2 = validarArray(arrayEnteros2);
System.out.print("\n\nEl segundo array contiene ceros?: " + resultado2);
Ingrese n煤mero en pos 0: 3
Ingrese n煤mero en pos 1: 0
Ingrese n煤mero en pos 2: 1
Ingrese n煤mero en pos 3: 2
El array ingresado contiene ceros?: true
El segundo array contiene ceros?: false
Ejemplos ArrayList#
Un ArrayList es un array con tama帽o variable.
La sintaxis para crear un ArrayList es:
Puedes consultar los tipos de datos Wrapper o envoltorios en este enlace. Tambien se puede usar la clase no primitiva String para crear arraylists.
Ejemplo 1.
Crea un ArrayList de tipo entero y agrega 4 n煤meros.
Recuerda que para agregar datos en un ArrayList puedes usar el m茅todo add()
ArrayList<Integer> enteros = new ArrayList<Integer>();
enteros.add(1);
enteros.add(10);
enteros.add(100);
enteros.add(56);
true
Para imprimir todos los elementos de un ArrayList ya no es necesario acceder uno a uno como en los arrays:
System.out.println("Elementos de arraylist: " + enteros);
Elementos de arraylist: [1, 10, 100, 56]
Si intentamos acceder a un elemento de la forma tradicional no ser谩 posible:
System.out.println(enteros[0]);
| enteros[0]
array required, but java.util.ArrayList<java.lang.Integer> found
La forma de acceder a los elementos es diferente que en los arrays, para obtener un elemento se debe usar el m茅todo get() y especificar el indice:
System.out.println("Posici贸n 0: " + enteros.get(0));
System.out.println("Posici贸n 1: " + enteros.get(1));
System.out.println("Posici贸n 2: " + enteros.get(2));
System.out.println("Posici贸n 3: " + enteros.get(3));
Posici贸n 0: 1
Posici贸n 1: 10
Posici贸n 2: 100
Posici贸n 3: 56
Para obtener el tama帽o de un ArrayList se utiliza en m茅todo size():
System.out.println("Tama帽o del arraylist: " + enteros.size());
Tama帽o del arraylist: 4
Para modificar un elemento en un ArrayList se emplea el m茅todo set() el cual recibe dos par谩metros: indice y nuevo valor.
System.out.println("ArraList original: " + enteros);
// Modifica el elemento en el indice 0
enteros.set(0, 199);
// Modifica el elemento en el indice 3
enteros.set(3, 199);
System.out.println("ArraList modificado: " + enteros);
ArraList original: [1, 10, 100, 56]
ArraList modificado: [199, 10, 100, 199]
Ejemplo 2.
Realiza un programa que pida al usuario \(n\) nombres, el programa dejar谩 de pedir nombres cuando se ingrese la palabra stop.
// Declaraci贸n de variables
Scanner scn = new Scanner(System.in);
String nombreIngresado;
ArrayList<String> nombresPersonas = new ArrayList<String>();
nombreIngresado = "";
// Pedir los nombres
while ( !nombreIngresado.equals("stop") ) {
System.out.print("Ingresa un nombre: ");
nombreIngresado = scn.nextLine();
if ( !nombreIngresado.equals("stop") ) {
nombresPersonas.add(nombreIngresado);
}
}
// Imprimiendo los nombres (uno a uno)
System.out.println("\nNombres en el ArrayList: ");
for (int i=0; i<nombresPersonas.size(); i++) {
System.out.println("Nombre en indice " + i + ": " + nombresPersonas.get(i));
}
Ingresa un nombre: Juan
Ingresa un nombre: Pedro
Ingresa un nombre: Sara
Ingresa un nombre: Maria
Ingresa un nombre: Camila
Ingresa un nombre: stop
Nombres en el ArrayList:
Nombre en indice 0: Juan
Nombre en indice 1: Pedro
Nombre en indice 2: Sara
Nombre en indice 3: Maria
Nombre en indice 4: Camila
Ejemplo 3
Crea un arraylist con n n煤meros aleatorios de tipo double. Imprime en pantalla todos los elementos del arraylist y la suma de cada elemento.
// Declaraci贸n de variables
Scanner scn = new Scanner(System.in);
int num;
double suma = 0, numAleatorio;
ArrayList<Double> valores = new ArrayList<>();
// Pedir n
System.out.print("Cu谩ntos n煤meros deseas generar?: ");
num = scn.nextInt();
// Crear y guardar los n煤meros
for (int i = 0; i <= num; i++) {
numAleatorio = (Math.random() * 100.0) + 1;
valores.add(numAleatorio);
}
// Sumar los valores (con forEach)
for (double valor: valores) {
suma += valor;
}
// Mostrar resultado
System.out.println("\nEl arraylist es: " + valores);
System.out.println("La suma de los valores aleatorios es: " + suma);
Cu谩ntos n煤meros deseas generar?: 6
El arraylist es: [55.86581414765775, 33.70799714227843, 19.752557321701357, 66.09075618760812, 72.92299376846391, 50.717994255729145, 11.472532922350485]
La suma de los valores aleatorios es: 310.5306457457892
Ejercicios#
Realice un programa que pida al usuario
nn煤meros enteros y muestre en pantalla cuantos n煤meros son pares.
Realice el programa utilizando arrays.
ndebe ser ingresado por el usuario.Realice una funci贸n que reciba un array y devuelva el n煤mero de pares.
Realice un programa que pida al usuario \(n\) nombres. Si el usuario ingresa un nombre repetido el nombre no se debe agregar y debe mostrar un aviso.
Realice el program utilizando ArrayList.
Realice una funci贸n para validar si el nombre ingresado no est谩 repetido.