04 Curso de Java OO. Trabajando con arreglos
Resumen:
Se estudiara el uso de arreglos y cadenas en la solución de problemas en Java.
I. DEFINICION DE ARREGLOS
1.1 Definición Un arreglo es una colección de variables del mismo tipo. La longitud de un arreglo es fijo cuando se crea.
Pasos de la creación de arreglos de primitivas
Se declara el arreglo Inicialmente la variable referencia un valor nulo int[] potencias; //forma mas usada int potencias[]; | |
Se crea el arreglo Se requiere la longitud del arreglo potencias = new int[4]; En caso de variables primitivas se inician en 0 o false. Las primitivas no se pueden operar con el valor null. En caso de variables referencia se inician en null. No referencian a ningún objeto. | |
Se inicia los valores del arreglo Se asignan valores elemento por elemento potencias[0] = 1; potencias[1] = 2; potencias[2] = 4; potencias[3] = 8; Los arreglos pueden ser creados e iniciados al mismo tiempo int[] potencias = {1,2,4,8}; |
Los arreglos son muy usados para buscar datos, especialmente si se conocen sus valores cuando se crean. int[] diasMesesAnioBisiesto = {31,29,31,30,31,30,31,31,30,31,30,31};
1.2. Practica Guiada
Los elementos de un arreglo inician con el valor por defecto de una primitiva.
La propiedad length del arreglo es su longitud.
Cual es el resultado los siguientes bloques.
Encuentre 3 errores en el siguiente código.
// bloque 1
int[] numeros = new int[5];
System.out.println(numeros.length-1);
// bloque 2
int[] truco = new int[3];
System.out.println(truco[0]);
// bloque 3
int[] cubos = {1, 8, 27, 64, 125};
int indice = cubos.length;
System.out.println(cubos[indice]);
// bloque 4
int[] pares = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
int cantidad = 0;
while (pares[cantidad] != null) {
cantidad++;
} // bloque 5
char[] vocales;
System.out.println(vocales.length);
Encuentre cuatro errores en el siguiente código
1. int[] a= new int[20];
2. float[] b= new float[10];
3. int a2 = new int[20];
4. int[] b2 = new float[10];
5. a[2] = -5;
6. a[4] = 10;
7. int k = a[6];
8. a[k] = 20;
9. a[20] = 0;
10. a[3] = 1.1;
Errores:
Ocurre ArrayIndexOutOfBoundsException cuando el índice del arreglo es incorrecto.
Ocurre NullPointerException cuando se intenta acceder a un elemento no inicializado.
Una primitiva no se puede comparar o asignar con un valor null.
Solo las referencias se comparan con null
2. ARREGLOS MULTIDIMENSIONALES
Se trata de arreglos de arreglos y se declara de la siguiente forma:
tipo[][] nombreArreglo = new tipo[cantidadFilas][cantidadColumnas];
int[][] tabla = new int[4][2];
tabla[0][0] = 1;
tabla[0][1] = 7;
tabla[1][0] = 3;
tabla[1][1] = 5;
tabla[2][0] = 4;
tabla[2][1] = 8;
Definir una matriz de enteros colocando como valores la suma de su numero de fila y columna en la matriz
{
int n= 10;
int p= 20;
double[][] m = new double[n][p];
for (int i= 0; i<n; i++)
int p= 20;
double[][] m = new double[n][p];
for (int i= 0; i<n; i++)
for (int j= 0; j<p; j++)
m[i][j]= i+j;
3. LABORATORIO
3.1 Ejercicio
Se tiene en un arreglo las notas del examen parcial de 10 alumnos. Encuentre la mínima y máxima nota.
Notas.java
package ejercicios;
public class Notas {
public static void main(String[] args) {
int[] notas = {12, 04, 07, 18, 10, 15, 05, 16, 18, 11};
int i = 0;
double min= 20.1;
double max= 00.0;
while (i < 10) {
...
i++;
} i++;
System.out.println(max);
System.out.println(min);
}
} 3.2. Ejercicio
Se cuenta con los arreglos siete y ocho
Multiplicar el primer elemento del arreglo siete con el primer elemento del arreglo ocho y así sucesivamente. Almacenar el resultado en otro arreglo y muéstrelo.
Matriz.java
package ejercicios;
public class Matriz {
public static void main(String[] args) {
int[] siete = {7,17,27,37,47,57,67,77,87,97,107};
int[] ocho = {8,18,28,38,48,58,68,98,108,118,198};
...
int[] ocho = {8,18,28,38,48,58,68,98,108,118,198};
...
}
} 4. CADENAS.
4.1. Definición.
Una cadena es una secuencia de caracteres
La librería String (o clase String) se usa para definir todas las cadenas en Java.
Las cadenas se delimitan con comillas dobles.
//
System.out.println("Hola Mundo.");
String camara = "Camara";
String luces = camara +" Accion";
String vacio = "";
//
4.2. Construccion de cadenas.
También se puede usar la siguiente sintaxis para construir cadenas.
// con una constante
String nombreEmpleado = new String("R. Daneel Olivaw");
// con una cadena vacia
String inicio = new String();
// copiando una cadena
String copiaEmpleado = new String(nombreEmpleado);
// con un arreglo de char
char[] vocales = {'a','e','i','o','u'};
String cadenaVocales = new String(vocales);
4.3. Concatenacion.
Para concatenar cadenas puede usar lo siguiente:
// Usando el operador +
System.out.println(" Nombre = " + nombreEmpleado );
// Puede concatenar primitivas y cadenas.
int edad = 22;
System.out.println(" Edad = " + edad );
// Mediante la función concat()
String nombre = "Elijah ";
String apellidos = "Baley ";
String nombreCompleto = nombre.concat(apellidos);
5. OPERACIONES CON CADENAS.
5.1. Longitud de una cadena.
String nombre = "Hari Seldon";
int longitud = nombre.length();
> 11
5.2. Ubicar un carácter mediante un indice
String nombre = "Gladia Delmarre";
char c = nombre.charAt(0);
> G
5.3. Extraer una subcadena
// 0123456789012345
String nombre = "Blissenobiarella";
// 1234567890123456
String subCadena = nombre.substring(2,6);
> isse
5.4. Convertir a mayúsculas o minúsculas.
String titulo = "Segunda Fundacion";
String mayusculas = titulo.toUpperCase();
String minusculas = titulo.toLowerCase();
> SEGUNDA FUNDACION
> segunda fundacion
5.5. Eliminar espacios del inicio y el final de la cadena.
String autor = " Isaac Asimov ";
String resaltar = "*"+autor.trim()+"*";
> *Isaac Asimov*
5.6. Ubicar una subcadena desde una ubicación.
// 0123456789012
String alcalde = "Salvor Hardin";
int ubicacion1 = alcalde.indexOf("vor");
int ubicacion2 = alcalde.indexOf("r",7);
int ubicacion3 = alcalde.indexOf("h");
> 3
> 9
> 0
5.7. Comparando dos cadenas.
String password = "FGHPUW";
if password.equals("fgHPUw")
System.out.println("Correcto!");
else
System.out.println("Error!");
> Error!
String password = "FGHPUW";
if password.equalsIgnoreCase("fgHPUw")
System.out.println("Correcto!");
else System.out.println("Error!");
> Correcto! 5.8. Comparando regiones de una cadena.
String url = "http://www.uni.edu.pe";
if (url.endsWith(".pe"))
System.out.println("Pagina Nacional");
else System.out.println("Pagina Extranjera");
String parametro = "ip = 192.100.51.2";
if (parametro.startsWith("ip"))
System.out.println("La direccion "+parametro);
else System.out.println("El parámetro no es una ip");
5.9. Obtener cadenas desde las primitivas.
Se utilizan funciones de la librería String
String seven = String.valueOf(7);
String unoPuntoUno = String.valueOf(1.1);
float pi = 3.141592;
String piString = String.valueOf(pi);
//
5.10. Obtener primitivas desde las cadenas.
Para esto se utilizan funciones de las librerías Integer y Float.
//
String alfa = "1977";
int alfaInteger = Integer.parseInt(alfa);
//
String beta = "19.77";
float betaFloat = Float.parseFloat(beta);
5.11. EJERCICIOS
Cual es la respuesta de:
public class Cadenas {
public static void main (String [] args) {
// Bloque 1
String s = new String("Viernes");
if (s=="Viernes")
System.out.println("Respuesta A");
if (s.equals("Viernes"))
System.out.println("Respuesta B");
// Bloque 2
int num1 = 1234567;
System.out.println(String.valueOf(num1).charAt(3));
// Bloque 3
String s1 = "Lunes";
String s2 = "Martes";
System.out.println(s1.concat(s2).substring(4,8));
// Bloque 4
// s3 inicia con 2 espacios y tambien termina con 2.
String s3 = " Lunes ";
System.out.println(s3.indexOf("es"));
System.out.println(s3.trim().indexOf("es"));
}
6. ARREGLOS DE CADENAS
6.1. Definicion
Un arreglo de cadenas también sigue los pasos de creación de arreglos.
Declaracion
String [] categorías;
Creación
categorias = new String[3];
Iniciación.
categorias[0] = "Drama";
// Creando una arreglo de cadenas vacias.
String [] arreglo = new String [4];
for ( int i = 0; i < arreglo.length; i++ ) {
arreglo[i] = new String();
} // Creando e iniciando un arreglo.
String [] categorias = {"Drama", "Comedia", "Accion"};
// Accesando los elementos del arreglo
String [] categorias = {"Drama", "Comedia", "Accion"};
System.out.println(" Comedia = "+ categorías[1].length() );
6.2. Ejercicios
Cual es el resultado de:
//
String [] categorias = {"Drama", "Comedia", "Accion", "Infantil"};
int indice = categorías.length – 2;
System.out.println(categorías[indice].length() );
7. MAIN
main() cuenta con un único parámetro que es un arreglo de cadenas.
Este arreglo de cadenas son los parámetros de la linea de comandos.
C:\> java Eco Hola Mundo
// Eco.java
package ejercicios;
public class Eco {
public static void main (String [] args) {
if (args.length != 2)
System.out.println("Uso: java Eco Arg1 Arg2");
else
System.out.println(args[0] + " " + args[1]);
}
}
LABORATORIO
Cree la clase Cliente que tendrá los siguiente datos id (int) nombre, direccion, telefono (String)
La clase debe contar con dos constructores.
Uno sin argumentos para autogenerar el id (que inicia en cero).
Otro que aceptara los datos nombre, dirección, teléfono.
El código del cliente debe ser automático e incrementarse en uno cada vez que se cree una instancia. Los códigos inician en 2001
Opcionalmente agregue los métodos set y get para estos atributos.
También agregue el método toString() para mostrar los datos del cliente así como el código creado automáticamente.
Cree la clase Pelicula con los siguientes datos: id (int) titulo, tipo (String) precio (float),
La clase debe contar con dos constructores.
Uno sin argumentos para autogenerar el id (que inicia en 1).
Otro que aceptara los datos titulo, tipo, precio .
El código de la Pelicula debe ser automático e incrementarse en uno cada vez que se cree una instancia. Los códigos inician en 9001
Opcionalmente agregue los métodos set y get para estos atributos.
También agregue el método toString() para mostrar los datos de la pelicula incluido el código autogenerado.
Cliente.java
public class Cliente {
private int id;
private static int ultimoId=2000;
private String nombre;
private String direccion;
private String telefono;
public Cliente() {
this.id = ultimoId;
ultimoId++;
}
public Cliente(String nombre, String nuevaDireccion, String nuevoTelefono) {
public Cliente(String nombre, String nuevaDireccion, String nuevoTelefono) {
this();
this.nombre = nombre;
this.direccion = nuevaDireccion;
this.telefono = nuevoTelefono;
this.nombre = nombre;
this.direccion = nuevaDireccion;
this.telefono = nuevoTelefono;
}
public void setNombre(String nuevoNombre) {
public void setNombre(String nuevoNombre) {
nombre = nuevoNombre;
}
public void setDireccion(String nuevoDireccion) {
public void setDireccion(String nuevoDireccion) {
direccion = nuevoDireccion;
}
public void setTelefono(String nuevoTelefono) {
public void setTelefono(String nuevoTelefono) {
telefono = nuevoTelefono;
}
public int getId() {
public int getId() {
return id;
}
public static int getUltimoId() {
public static int getUltimoId() {
return ultimoId;
}
public String getNombre() {
public String getNombre() {
return nombre;
}
public String getDireccion() {
public String getDireccion() {
return direccion;
}
public String getTelefono() {
public String getTelefono() {
return telefono;
}
public String toString(){
public String toString(){
return ("Codigo : "+id+" "+nombre+" "+direccion+" "+telefono);
}
} //...
Pelicula.java
public class Pelicula {
private int id;
private static int ultimoId=9000;
private String titulo;
private String tipo;
private float precio;
public Pelicula() {
this.id = ultimoId;
ultimoId++;
} ultimoId++;
public Pelicula(String nuevoTitulo,String nuevoTipo) {
this();
this.titulo = nuevoTitulo;
this.tipo = nuevoTipo;
this.titulo = nuevoTitulo;
this.tipo = nuevoTipo;
}
public void setTitulo(String nuevoTitulo) {
public void setTitulo(String nuevoTitulo) {
titulo = nuevoTitulo;
}
public void setTipo(String nuevoTipo) {
public void setTipo(String nuevoTipo) {
tipo = nuevoTipo;
}
public void setPrecio(float nuevoPrecio) {
public void setPrecio(float nuevoPrecio) {
precio = nuevoPrecio;
}
public String getTitulo() {
public String getTitulo() {
return titulo;
}
public String getTipo() {
public String getTipo() {
return tipo;
}
public int getId() {
public int getId() {
return id;
}
public float getPrecio() {
public float getPrecio() {
return id;
}
public static int getUltimoId() {
public static int getUltimoId() {
return ultimoId;
}
public String toString() {
public String toString() {
return ("Codigo : "+id+" "+titulo+" "+tipo);
}
} Defina la clase BaseDeDatos con tres métodos: en el primero creara 4 clientes (nombres familiares) y 6 peliculas (que haya visto en cine o televisión). Los clientes y las películas se encontraran en un arreglo. El segundo devolvera el objeto cliente ingresando el id del cliente. El tercero realizara lo mismo con el id de una pelicula.
BaseDeDatos.java
package tacora;
public class BaseDeDatos {
private static Cliente[] cliente = new Cliente[4];
private static Pelicula[] pelicula = new Pelicula[6];
public BaseDeDatos() {
private static Pelicula[] pelicula = new Pelicula[6];
public BaseDeDatos() {
cliente[0] = new Cliente("Daneel Olivaw","Solaria 4", "511-711-2542");
//...
pelicula[0] = new Pelicula("Neverland","Drama",10.0f);
//...
//...
pelicula[0] = new Pelicula("Neverland","Drama",10.0f);
//...
}
public static Cliente getCliente(int id) {
public static Cliente getCliente(int id) {
for (...) {
break;
}
return cliente[];
return cliente[];
}
public static Pelicula getPelicula(int id) ...
public static Pelicula getPelicula(int id) ...
}
Cree la aplicación Arreglos que permita Cargar la base de datos y mostrar los datos del cliente con codigo 2002 y la pelicula con codigo 9003
TacoraArreglos.java
package tacora;
public class TacoraArreglos {
public static void main (String[] args) {
int clienteId;
int peliculaId;
if (args.length != 2)
}
Segunda Parte
Modifique la clase Pelicula y agregue el atributo: cliente (Cliente) que sera quien alquile la pelicula, implemente el método set y get correspondientes.
Modifique la clase Cliente y agregue el atributo: importeAlquiler (float) implemente su métodos set y get correspondiente.
Modifique la clase BaseDeDatos y agregue un método que permite calcular el importe de alquiler de un cliente. La aplicación debe permitir realizar el alquiler de 3 películas al cliente 2002 y muestre su costo.
Pelicula.java
package tacora;
public class Pelicula {
private Cliente cliente;
//...
public void setCliente(Cliente alquiladoPor) {
}
Cliente.java
package tacora;
public class Cliente {
private float importeAlquiler;
//...
}
BaseDeDatos.java
package tacora;
public class BaseDeDatos {
//...
public static float getImporte(Cliente cliente) {
Pelicula pelicula = null;
float importe = 0;
for (int i = 0;...) {
}
TacoraArreglos.java
package tacora;
public class TacoraArreglos {
public static void main (String[] args) {
int clienteId;
int peliculaId1;
int peliculaId2;
int peliculaId3;
if (args.length != 4)
Cree la aplicación Arreglos que permita Cargar la base de datos y mostrar los datos del cliente con codigo 2002 y la pelicula con codigo 9003
TacoraArreglos.java
package tacora;
public class TacoraArreglos {
public static void main (String[] args) {
int clienteId;
int peliculaId;
if (args.length != 2)
System.out.println("java TacoraArreglos 2002 9003");
else {
clienteId = Integer.parseInt(args[0]);
peliculaId = Integer.parseInt(args[1]);
peliculaId = Integer.parseInt(args[1]);
}
BaseDeDatos bd = new BaseDeDatos();
System.out.println(BaseDeDatos.getCliente(clienteId ));
System.out.println(BaseDeDatos.getPelicula(peliculaId));
BaseDeDatos bd = new BaseDeDatos();
System.out.println(BaseDeDatos.getCliente(clienteId ));
System.out.println(BaseDeDatos.getPelicula(peliculaId));
}
}
Segunda Parte
Modifique la clase Pelicula y agregue el atributo: cliente (Cliente) que sera quien alquile la pelicula, implemente el método set y get correspondientes.
Modifique la clase Cliente y agregue el atributo: importeAlquiler (float) implemente su métodos set y get correspondiente.
Modifique la clase BaseDeDatos y agregue un método que permite calcular el importe de alquiler de un cliente. La aplicación debe permitir realizar el alquiler de 3 películas al cliente 2002 y muestre su costo.
Pelicula.java
package tacora;
public class Pelicula {
private Cliente cliente;
//...
public void setCliente(Cliente alquiladoPor) {
cliente = alquiladoPor;
} }
Cliente.java
package tacora;
public class Cliente {
private float importeAlquiler;
//...
}
BaseDeDatos.java
package tacora;
public class BaseDeDatos {
//...
public static float getImporte(Cliente cliente) {
Pelicula pelicula = null;
float importe = 0;
for (int i = 0;...) {
if (pelicula[i].getCliente().getId() == cliente.getId()) {
importe += pelicula[i].getPrecio();
}
}
return importe;
} return importe;
TacoraArreglos.java
package tacora;
public class TacoraArreglos {
public static void main (String[] args) {
int clienteId;
int peliculaId1;
int peliculaId2;
int peliculaId3;
if (args.length != 4)
System.out.println("java TacoraArreglos 2002 9001 9002 9003");
else {
clienteId = args[0];
peliculaId1= args[1];
peliculaId2= args[2];
peliculaId3= args[3];
peliculaId1= args[1];
peliculaId2= args[2];
peliculaId3= args[3];
}
BaseDeDatos bd = new BaseDeDatos();
Cliente cliente = bd.getCliente(clienteId);
Pelicula pelicula1 = bd.getPelicula(peliculaId1);
pelicula1.setCliente(cliente);
Pelicula pelicula2 = bd.getPelicula(peliculaId2);
pelicula2.setCliente(cliente);
bd.getPelicula(peliculaId3).setCliente(cliente);
System.out.println(cliente);
System.out.println(pelicula1);
System.out.println(pelicula2);
System.out.println(bd.getPelicula(peliculaId3));
System.out.println(bd.getImporte(cliente));
BaseDeDatos bd = new BaseDeDatos();
Cliente cliente = bd.getCliente(clienteId);
Pelicula pelicula1 = bd.getPelicula(peliculaId1);
pelicula1.setCliente(cliente);
Pelicula pelicula2 = bd.getPelicula(peliculaId2);
pelicula2.setCliente(cliente);
bd.getPelicula(peliculaId3).setCliente(cliente);
System.out.println(cliente);
System.out.println(pelicula1);
System.out.println(pelicula2);
System.out.println(bd.getPelicula(peliculaId3));
System.out.println(bd.getImporte(cliente));
}
}