Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Programación en Java
Funciones Procedimientos–
Arrays – cadenas
Correo: Victor.Barrientos.rodriguez@gmail.com
Asunto: BCI01_JAVA_PRAC_02
Programa en Java - Funciones
import java.util.Scanner;
public class EJERCICIO_02
{
public static int SUMA(int NUM_01, int NUM_02)
public static Scanner TECLADO;
{
public static void main(String[] ARGUMENTOS) int SUMA;
{ SUMA = NUM_01 + NUM_02;
return SUMA;
TECLADO = new Scanner(System.in);
}
int NUMERO_01,NUMERO_02,OP_SUMA,OP_RESTA,OP_MULTIPLICACION; public static int RESTA(int NUM_01, int NUM_02)
float OP_DIVISION; {
int RESTA;
RESTA = NUM_01 - NUM_02;
NUMERO_01 = LEER_NUMERO("NUMERO 01");
return RESTA;
NUMERO_02 = LEER_NUMERO("NUMERO_02"); }
public static int MULTIPLICACION(int NUM_01, int NUM_02)
OP_SUMA = SUMA(NUMERO_01,NUMERO_02); {
int MULTIPLICACION;
OP_RESTA = RESTA(NUMERO_01,NUMERO_02);
MULTIPLICACION = NUM_01 * NUM_02;
OP_MULTIPLICACION = MULTIPLICACION(NUMERO_01,NUMERO_02); return MULTIPLICACION;
OP_DIVISION = DIVISION(NUMERO_01,NUMERO_02); }
public static float DIVISION(int NUM_01, int NUM_02)
{
float DIVISION;
IMPRIMIR_RESULTADOS(OP_SUMA,OP_RESTA,OP_MULTIPLICACION,OP_DIVISION);
DIVISION = (float)(NUM_01/NUM_02);
} return DIVISION;
}
public static int LEER_NUMERO(String NOMBRE_NUMERO) public static void IMPRIMIR_RESULTADOS(int S,int R,int M,float D)
{
{
System.out.println("LOS RESUTLADOS SON : \n");
int NUMERO;
System.out.println("SUMA : " + S);
System.out.println("RESTA : " + R);
System.out.print("INDIQUE EL " + NOMBRE_NUMERO + " : ");
System.out.println("MULTIPLICACION : " + M);
NUMERO = TECLADO.nextInt(); System.out.println("DIVISION : " + D);
}
return NUMERO; }
}
2
Programa en Java
import java.util.Scanner;
public class TestArreglos {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
float promedio = 0;
float suma = 0;
int mayor = 0;
int menor = 0;
int[] miArreglo = new int[10];
for (int i = 0; i < 10; i++) {
System.out.print("Ingrese el número en la posición " + (i) + " :");
miArreglo[i] = entrada.nextInt();
}
// realizar la suma, promedio y el mayor
for (int i = 0; i < miArreglo.length; i++) {
suma += miArreglo[i];
if (mayor < miArreglo[i]) {
mayor = miArreglo[i];
}
System.out.println(String.format("Posición [%d] Elemento: %d", i, miArreglo[i]));
}
menor = mayor; 3
Programa en Java
4
Arrays y colecciones
Declaración.
modificadores tipo[] identificador;
Los modificadores se aplican al array, no a los elementos.
Asignar espacio de almacenamiento creando una instancia mediante
new.
int[] a = new int[5];
int b[];
b = new int[3];
length, indica el número de elementos.
Los índices van de 0 hasta length – 1.
Cualquier otro valor lanza la excepción ArrayIndexOutOfBoundException.
En Java los arrays no son un tipo de dato, sino una clase que extiende
la clase Object (superclase base).
Inicialización de arrays (I)
0 1 2 3 4 0 1 2 3 4
0 0 0 0 0 null null null null null
a palabras
int a[] = new int[5]; String palabras[] = new String[5];
Inicialización de arrays (II)
Llenar el array.
Mediante asignaciones:
int[] a = new int[5];
//Carga de elementos en el array
//con números aleatorios entre 0 y 19.
for (int i=0;i<=a.length-1;i++)
a[i] = (int) (Math.random() * 20);
En arrays de referencia.
String [] palabras = new String[5];
H o l a
0 1 2 3 4
null null null null
palabras
palabras[3] = "Hola";
Inicialización de arrays (III)
palabras
palabras2[3] = “xxxx”
null null
cad
otra
Arrays multidimensionales (II)
Rellenar arrays.
Rellenar el array a con el valor del segundo argumento.
public static void fill(tipo[] a, tipo val)
Rellenar el array a entre dos posiciones dadas con el valor del
segundo argumento.
public static void fill(tipo[] a, int desde, int hasta,
tipo val)
Ordenar arrays.
public static void sort(tipo[] a)
Buscar en arrays
public static int binarySearch( tipo[] a, tipo elemento)
Buscar el elemento en el array. Si lo encuentra devuelve su posición, si no
devuelve un número negativo con la posición donde debería estar.
Cadenas
Dos tipos de clases para almacenar cadenas.
String (java.lang). Cadenas inmodificables.
Consume menos recursos.
StringBuffer(java.lang). Cadenas modificables.
StringBuilder (java.lang). Cadenas modificables, mas eficiente que
StringBuffer.
h o l a a b c
cad1 cad2
String cad1 = “hola”; StringBuffer cad2 = “abc”;
h o l a a d i o s a b c d e f
cad1 cad2
cad1 = “adios” cad2.append(“def”);
import java.util.Scanner;
public class UsoDe_IndexOf
{
public static void main(String[] ARGUMENTOS)
{
Scanner TECLADO = new Scanner(System.in);
String PALABRA_01;
int POCICION;
System.out.print("INGRESE UNA CADENA : ");
PALABRA_01 = TECLADO.nextLine();
POSICION = PALABRA_01.indexOf("JAVA");
if(POSICION == -1)
{
System.out.println("NO EXISTEN LETRAS \"a\" EN LA CADENA");
}
else
{
System.out.println("LA PRIMERA LETRA \"a\" ESTA EN LA POSICION : " + (POSICION));
}
}
}
import java.util.Scanner;
public class UsoDe_Substring
{
public static void main(String[] ARGUMENTOS)
{
Scanner TECLADO = new Scanner(System.in);
String PALABRA,PALABRA_02;
PALABRA_02 = PALABRA.substring(2,5);
if(PALABRA_01.equals(PALABRA_02))
{
System.out.println("LAS CADENAS SON IGUALES...");
}
else
{
System.out.println("LAS CADENAS NO SON IGUALES...");
}
}
}
Constructores de String y StringBuffer
Se puede construir un objeto de la clase String como si se tratara de
un tipo de dato primitivo.
String cad1 = “hola”;
Constructores de String:
String(), crea una nueva cadena vacía.
String(String valor). Crea una nueva cadena a con el contenido de
valor.
String(StringBuffer sb). Crea una nueva cadena a partir de un
StringBuffer.
Constructores de StringBuffer:
StringBuffer(), crea una nueva cadena vacía con una capacidad inicial
de 16 caracteres.
StringBuffer(int longitud). Crea una nueva cadena vacía con una
capacidad inicial de longitud caracteres.
StringBuffer(String str). Crea un nuevo StringBuffer a partir
de una valor de tipo String.
Comparación de cadenas (I)
Método equals.
public boolean equals(String str)
System.out.println(c1.equals(c3)); //Devuelve true
Comparación de cadenas (II)
Método equalsIgnoreCase.
public boolean equalsIgnoreCase(String str)
c3 = "Hola";
System.out.println(c1.equalsIgnoreCase(c3)); //Devuelve true
Método compareTo.
public int compareTo(String str)
Devuelve 0 si las cadenas son iguales; mayor que 0 si la cadena que
invoca es mayor que str o menor que 0 si la cadena que invoca es
menor que str.
El número que devuelve es la direfencia entre los códigos del primer
carácter de la cadena.
c3 = "Hola"; c1 = "hola";
System.out.println(c1.compareTo(c3)); //Devuelve 32
c3 = "Adios";
System.out.println(c3.compareTo(c1)); //Devuelve -39
Comparación de cadenas (III)
Método compareToIgnoreCase.
public int compareToIgnoreCase(String str)
c3 = "Hola";
System.out.println(c1.compareToIgnoreCase(c3)); //Devuelve 0
c3 = "Adios";
System.out.println(c3.compareToIgnoreCase(c2)); //Devuelve -7
Otros métodos:
public int length()
public char charAt(int i)
Devuelve el carácter contenido en la posición i. El argumento debe ser
mayor o igual que 0 y menor que length() -1.
public int indexOf(int c)
Devuelve la posición de la primera ocurrencia del carácter c o -1 si no
está.
public int indexOf(int c, int inicio)
Devuelve la posición de la primera ocurrencia del carácter c a partir de
la posición inicio o -1 si no está.
c1 = "cocodrilo";
System.out.println(c1.indexOf('o')); //Devuelve 1
System.out.println(c1.indexOf('o',5)); //Devuelve 8
Métodos de String (II)
public int lastIndexOf(int c)
Devuelve la posición de la última ocurrencia del carácter c o -1 si no está.
public int indexOf(int c, int inicio)
Devuelve la posición de la última ocurrencia del carácter c a partir de la posición
inicio (contando desde el final) o -1 si no está.
c1 = "cocodrilo";
System.out.println(c1.lastIndexOf('o')); //Devuelve 8
System.out.println(c1.lastIndexOf('o',7)); //Devuelve 3
public String toUpperCase()
public String toLowerCase()
public String substring(int inicio)
public String substring(int inicio, int fin)
Devuelve una subcadena formada a partir del carácter inicio hasta el carácter fin.
public String[] split(String expr)
Devuelve un array de cadenas formado por subcadenas separadas a partir del
separador expr.
Métodos de StringBuffer (I)
métodos:
public int length()
public char charAt(int i)
public int indexOf(int c)
public int indexOf(int c, int inicio)
public int lastIndexOf(int c)
public int indexOf(int c, int inicio)
public String toUpperCase()
public String toLowerCase()
public String substring(int inicio)
public String substring(int inicio, int fin)
public String[] split(String expr)
Métodos de StringBuffer (II)
Modificación de caracteres
public void setCharAt(int pos, char car)
Sustituye el carácter de la posición pos por el carácter car.
public StringBuffer replace(int inicio,
int fin, String str)
Reemplaza los caracteres comprendidos entre inicio y fin por str.
La clase String tiene además el método replace(char car1,char
car2) que sustituye todas las apariciones de car1 por car2.
public StringBuffer append(tipo valor)
Añade una representación de valor al final del StringBuffer.
public StringBuffer insert(int pos, tipo valor)
Inserta una representación de valor en la posición pos.
public StringBuffer delete(int inicio, int fin)
Borra los caracteres situados entre la posición inicio y fin.
Conversiones de cadenas de texto
Tipo A String De String
Constructores
String(byte[] bytes, int inicio, int longitud)
String(byte[] bytes)
Por ejemplo:
Vector v1 = new Vector();
Vector v2 = new Vector(100);
Vector v3 = new Vector(v2);// v3 contiene los mismo elementos que v2
AÑADIR, INSERTAR EN UN VECTOR
Los elementos que se meten en el vector deben ser objetos, no pueden ser datos de
tipos primitivos (int, char ... ).
Los métodos son:
boolean add (Object ob); añade el objeto a continuación del último elemento del vector.
void addElement(Object ob); añade el objeto a continuación del último elemento del vector.
void insertElement(Object ob, int p); inserta el objeto en la posición p; los
elementos posteriores a p se desplazan.
Por ejemplo:
Vector num = new Vector();
for(int i = 1; i <= N; i++)
{
Numero q;
q = new Racional(3 * i, 3 * i % 7 + 1);
num.addElement(q);
q = new Complejo(3 * i % 7, 3 * i - 5);
num.addElement(q);
}
ACCESO A UN ELEMENTO DE UN VECTOR
Los métodos de acceso devuelven el elemento con el tipo Object, entonces es
posible que sea necesario realizar una conversión al tipo del objeto.
Los métodos son:
Object elementAt(int p); devuelve el elemento cuya posición es p.
Object get(int p); devuelve el elemento cuya posición es p.
int size(); devuelve el número de elementos
Por ejemplo:
int k;
ListaArray .java
import java.util.*;
import java.io.*;
public class ListaArray
{
public static void main(String[] args)
{
BufferedReader entrada = new BufferedReader( new
InputStreamReader(System.in)); (continúa)
List av = new ArrayList();
String cd;
System.out.println("Datos de entrada (adios para acabar)");
try {
do {
cd = entrada.readLine();
if (! cd.equalsIgnoreCase("adios"))
av.add(cd);
else break;
} while (true);
System.out.println("Lista completa:" + av);
// elimina una palabra
System.out.println("Palabra a eliminar: ");
cd = entrada.readLine();
if (av.remove(cd))
System.out.println("Palabra borrada, lista actual: + av");
else
System.out.println("No esta en la lista la palabra");
// reemplaza elemento que está en el centro
(continúa)
av.set(av.size()/2, "NuevaCadena");
System.out.println("Lista completa:" + av);
// busqueda de una palabra
System.out.println("Búsqueda de una palabra: ");
cd = entrada.readLine();
int k = av.indexOf(cd);
// crea iterador y recorre la lista hacia adelante
if(k >= 0)
{
System.out.println("Recorre la lista a partir de k: "+k);
ListIterator ls = av.listIterator(k);
while(ls.hasNext())
{
System.out.print((String)ls.next() + " ");
}
}
}
catch(Exception e) {;}
}
}
ITERATOR
Java 2 desarrolla nuevas colecciones y el iterador común Iterator. Todo objeto
colección se puede recorrer con este iterador. Todas las colecciones disponen del método
iterator() que devuelve un objeto Iterator.
El interface Iterator permite no solo acceder a los elementos, también
eliminarlos. Pertenece al paquete java.util, la declaración es la siguiente:
public interface Iterator
{
boolean hasNext();
Object next();
void remove();
}
Iterator iter;
iter = lista.iterator();
(continúa)
while (iter.hasNext())
{
Punto q;
q = (Punto)iter.next();
if (q.getX() < 2 || q.getX() > 12)
{
System.out.println("Punto: " + q + " se elimina");
iter.remove();
}
}
Con Java 1.5 se puede parametrizar el tipo de los elementos, de tal forma que no es necesario
realizar la conversión y, además, el compilador verifica el tipo de los elementos añadidos. A
continuación se escribe el código con esta característica.
List<Punto> lista = new ArrayList<Punto>();
Iterator<Punto> iter;
iter = lista.iterator();
while (iter.hasNext()){
Punto q;
q = iter.next(); // no es necesario una conversión(cast)
....
COLECCIONES PARAMETRIZADAS(I)
Las colecciones históricas y las desarrolladas en Java 2 guardan, internamente, los elementos en
arrays de tipo Object. Con esto se consigue la máxima generalización ya que Object es la clase
base de cualquier objeto. Al recuperar elementos de la lista es necesario discernir el tipo concreto
de elemento. Por ejemplo:
LinkedList lis = new LinkedList();
lis.add (new Racional(2,9));
lis.addLast(new String("Mi globo"));
q = lis.getFirst();
if (q instanceof Racional)
t = (Racional) q;
...
COLECCIONES PARAMETRIZADAS(II)
En muchas aplicaciones de colecciones los elementos son del mismo tipo. Por esta razón, y otras
como que el compilar pueda realizar comprobaciones de tipo, Java 1.5 amplía la declaración de
todas las clases e interfaces relacionados con colecciones para dotarlas de la posibilidad de
parametrizar el tipo que va a tener los elementos de una colección.
Por ejemplo:
Vector<Complex> zz;
zz = new Vector<Complex>(19);
ArrayList<Bebida> aa = new ArrayList<Bebida> ();
aa.add(new Empleado()); // error
Sintaxis
Coleccion<tipo1...> var;
Para crear instancias,
new Coleccion<tipo1...>();
Por ejemplo:
Set<Integer> cn = new TreeSet<Integer>();