You are on page 1of 43

Taller de Programacin de Aplicaciones

1. LENGUAJE JAVA
Java es un lenguaje de programacin y una plataforma
informtica comercializada por primera vez en 1995 por Sun
Microsystems. Hay muchas aplicaciones y sitios web que no
funcionarn a menos que tenga Java instalado y cada da se crean
ms. Java es rpido, seguro y fiable. Desde porttiles hasta
centros de datos, desde consolas para juegos hasta sper
computadoras, desde telfonos mviles hasta Internet, Java est en
todas partes.
// ejemplo01

Saludo.java

public class Saludo{


public static void main (String[] args){
System.out.println("Bienvenido a Java");
}
}//fin Saludo

// ejemplo02 TelevisorSony.java
public class TelevisorSony{
private int volumen;

public void ajustarvolumen(String modo, int valor){


if(modo.equals("subir")){
volumen+=valor;
System.out.println("Aumento "+valor);
}
else{
volumen-=valor;
System.out.println("Disminuyo "+valor);
}
}

public static void main (String[] args){


//creamos el Objeto
TelevisorSony ts = new TelevisorSony();
ts.ajustarvolumen("bajar",1);
}
}//fin Saludo

Taller de Programacin de Aplicaciones


Para ejecutar el siguiente programa en el IDE NetBeans vaya al men
Run, Set Project Configuration, Customize y en campo Arguments llene
los siguientes datos por ejemplo: arg1 arg2 arg3 arg4.

public class Argumentos{

public static void main (String[] args){

System.out.println(args[0]);
System.out.println(args[1]);
System.out.println(args[2]);
System.out.println(args[3]);

}
}

Taller de Programacin de Aplicaciones


2. CLASE SCANNER EN JAVA

La clase Scanner est diseado para leer los bytes y


convertirlo en valores primitivos (int, double, bool, etc) o en
valores String.
A continuacin se detalla el funcionamiento de esta clase
utilizada principalmenta para leer datos de teclado:
Primero tiene que crear un objeto Scanner y conectarlo con
System.in

Scanner teclado = new Scanner(System.in);


Ejemplo:
int edad;
Scanner teclado = new Scanner(System.in);
System.out.println(Que edad tienes);
edad = teclado.nextInt();

Mtodos:

nextByte
nextDouble
nextFloat
nextInt
nextLine
nextLong

La mayora de estos mtodos se sobre entienden. Hay 2 que


necesitan un poco ms de explicacin. El mtodo nextByte no
significa que va a reconvertir la informacin en bytes, sino que
va a transformar la informacin en el valor byte la cual puede
ser un nmero del -128 al +127. El siguiente mtodo que quisiera
explicar es nextLine, nextLine convierte los bytes.

//ejemplo03 Ingreso de Datos con Scanner


import java.util.Scanner;

public class PruebaScanner{


public static void main(String[] args){

Taller de Programacin de Aplicaciones


Scanner in = new Scanner(System.in);

int edad;
String nombre;
String direccion;

System.out.println("Ingrese nombre: ");


nombre = in.next();

System.out.println("Ingrese edad: ");


edad = in.nextInt();

System.out.println("Ingrese direccion: ");


direccion = in.next();

System.out.printf("\n Tu nombre es %s, tu edad %d, vives en


%s\n", nombre, edad, direccion);

System.out.println("\n Tu nombre es: "+nombre+"Tu edad:


"+edad+ "vives en "+ direccion);
}
}

Taller de Programacin de Aplicaciones


3. MTODOS ESTTICOS O DE CLASE

Un miembro static puede ser usado sin crear ningn objeto


de su clase.
Puede aplicarse a variables de instancia y mtodos. Las
variables static son variables globales. Existe una sola
copia de la variable para todos los objetos de su clase.
Los mtodos static:

Slo pueden llamar a mtodos static


Slo deben acceder a datos static
No pueden usar this o super

Una clase puede tener un bloque static que se ejecuta


una sola vez cuando la clase se carga por primera vez.

//Ejemplo acceso a datos y metodos Estaticos


public class EjmStatic {
static int a = 3;
static int b;

static void procesa(int x) {


System.out.println("x = " + x);
System.out.println("a = " + a);
System.out.println("b = " + b);
}
static {
System.out.println("Bloque estatico inicializado.");
b = a * 4;
}
public static void main(String args[]) {
//Accede a la funcion static
procesa(15);

//Accede al dato static


System.out.println(a);
System.out.println(EjmStatic.a);
}

Taller de Programacin de Aplicaciones


}

//Ejemplo Contador de Clases


class CuentaClase{
static int contador = 0;

//declaramos la variable esttica

public CuentaClase(){
//Se modifica el valor en el constructor
contador += 1;
}

public static void main (String[] args){


new CuentaClase();
new CuentaClase();
new CuentaClase();
System.out.println("El nmero de clases creadas son: "+contador);
}
}

4. SINTAXIS DEL LENGUAJE


Lenguaje sensible a maysculas/minsculas.
4.1.

Secuencias de Escape
\n
\t
\r
\f
\b
\\
\'
\"

----->
----->
----->
----->
----->
----->
----->
----->

Nueva Linea.
Tabulador.
Retroceso de Carro.
Comienzo de Pagina.
Borrado a la Izquierda.
El carcter barra inversa ( \ ).
El carcter prima simple ( ' ).
El carcter prima doble o bi-prima ( " ).

Taller de Programacin de Aplicaciones

4.2.

Tipos de Datos

Nombre

Tipo

Ocupa

Rango Aproximado

byte

Entero

1 byte

-128 a 127

short

Entero

2 bytes

-32768 a 32767

int

Entero

4 bytes

2*109

long

Entero

8 bytes

Muy grande

float

Decimal simple

4 bytes

Muy grande

double

Decimal doble

8 bytes

Muy grande

char

Carcter simple

2 bytes

---

boolean

Valor true o false

1 byte

---

4.3.

Valores por Defecto

Valor
Tipo de
por
Dato
Defecto
byte
0
short
0
int
0
long

0L

Valor Min.

Valor Max.

-128
127
-32,768
32,767
-2,147,483,648
2,147,483,647
9,223,372,036,854,775,8
9,223,372,036,854,775,8
07
08
7

Taller de Programacin de Aplicaciones

float
double

0.0f
0.0d
'\u0000
char
'
String* null
boolean false

**
**

**
**

'\u0000'

'\uffff'

""
false

Total de Memoria
true

Taller de Programacin de Aplicaciones


// Programam para mostrar datos por Defecto
public class DatosporDefecto{

byte b;
short s;
int i;
long l;
float f;
double d;
char c;
String st;
boolean bo;

public void mostrardatos(){


System.out.println(b);
System.out.println(s);
System.out.println(i);
System.out.println(l);
System.out.println(f);
System.out.println(d);
System.out.println("char "+c);
System.out.println("string "+st);
System.out.println(bo);
}
public static void main (String[] args){
DatosporDefecto Df = new DatosporDefecto();
Df.mostrardatos();
}
}

Taller de Programacin de Aplicaciones

4.4.

Conversiones Implcitas
Ejemplos de conversiones implcitas:
int k = 8,r;
short s=10;
char c=a;
float f;
r = c;
f = k;
k = s;

//conversion implicita de char a int


//conversion implicita de int a float
//conversion implicita de short a int

No se puede convertir implcitamente:


Long a int
Byte a char
Float a int

4.5.

Conversiones explicitas
Variable = (tipo destino) Variable_origen
Ejemplo:
char c;
byte b;
int i=100;
double d=34.5;
c = (char) d;
b = (byte) p;

10

Taller de Programacin de Aplicaciones

4.6.

Operador instanceof
Se utiliza para saber si un objeto pertenece a una clase.

class Animal {
public static void main (String[] args){
Gato michi = new Gato();
if (michi instanceof Animal)
System.out.println("michi es un Gato y tambien
un animal");
michi.maullar();
}
}
class Gato extends Animal {
public void maullar(){
System.out.println("miau");
}
}

// Ejemplo de instanceof
import java.util.Scanner;

class Animal {
int edad;
public void muestra_edad(){
System.out.println("su edad es "+edad);
}

public void asignar_edad(){


Scanner teclado = new Scanner(System.in);
System.out.println("Ingrese su edad: ");
edad = teclado.nextInt();
}

public static void main (String[] args){


Gato michi = new Gato();
11

Taller de Programacin de Aplicaciones


Perro boby = new Perro();
if (michi instanceof Animal){
System.out.println("michi es un Gato y tambien un
animal");
michi.maullar();
michi.asignar_edad();
michi.muestra_edad();
}

if (boby instanceof Animal){


System.out.println("boby es un Perro y tambien un
animal");
boby.ladrar();
boby.asignar_edad();
boby.muestra_edad();
}
}
}

class Gato extends Animal {


public void maullar(){
System.out.println("miau");
}
}

class Perro extends Animal {


public void ladrar(){

System.out.println("guau");
}
}

12

Taller de Programacin de Aplicaciones


4.7.

Recolector de Basura
El recolector de basura (Garbage Colector) es una
aplicacin que forma parte de JVM, cuya funcin es liberar
de la memoria los objetos que ya no se utilizan. Si se va
a dejar de usar un objeto se debe eliminar la referencia,
esto se puede hacer asignando el valor null a la variable
Integer dato;
dato = null;
//ejemplo coo funciona el Garbage Collector
class MyGc {
public MyGc propiedad;
public static void main(String[] args) {
MyGc PrimerObjeto = new MyGc();
PrimerObjeto.propiedad = new MyGc();
PrimerObjeto = null;
}
}

4.8 Instrucciones de Control.

1. Sentencia if
import java.util.*;
public class MayorTres {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n1, n2, n3;
System.out.print("Introdusca primer nmero: ");
n1 = sc.nextInt();
System.out.print("Introdusca segundo nmero: ");
n2 = sc.nextInt();
System.out.print("Introdusca tercer nmero: ");
n3 = sc.nextInt();
if(n1 > n2)
if(n1>n3)
System.out.println("El mayor es: " + n1);
else
System.out.println("el mayor es: " + n3);

13

Taller de Programacin de Aplicaciones


else if(n2>n3)
System.out.println("el mayor es: " + n2);
else
System.out.println("el mayor es: " + n3);
}
}

2. Sentencia Switch
public class Examen {
public static void main(String args[]){
char grade = 'C';
switch(grade)
{
case 'A' :
System.out.println("Excelente!");
break;
case 'B' :
case 'C' :
System.out.println("Bien");
break;
case 'D' :
System.out.println("Pasaste");
case 'F' :
System.out.println("Reintenta");
break;
default :
System.out.println("No valido");
}
System.out.println("Tu grado es " + grade);
}

3. Sentencia For

import java.util.Scanner;

class Factorial
{
public static void main(String args[])
{
int n, c, fact = 1;

14

Taller de Programacin de Aplicaciones


System.out.println("Ingrese
factorial");

un

Numero

para

Calcular

su

Scanner in = new Scanner(System.in);


n = in.nextInt();

if ( n < 0 )
System.out.println("Nro no debe ser negativo");
else
{
for ( c = 1 ; c <= n ; c++ )
fact = fact*c
System.out.println("El Factorial de "+n+" es = "+fact);
}
}
}

4. Sentencia While
public class PruebaWhile {
public static void main (String [ ] args) {
int i = 0;
while (true) {
//Condicin trivial: siempre
cierta
i++;
System.out.println ("El valor de i: " + i);
if (i==9) { break;}
}
}
}

15

Taller de Programacin de Aplicaciones


4.9.

Arrays

Un array se utiliza con la expresin:

tipo [] variable_array;
tipo variable_array[];

Para indicar las dimensiones de un array

variable = new tipo[tamao];

array = new int[5];


cadena = new char[10];
String [] datos = new String[10];

Para inicializar un array


int[] nums = {10,20,30,40};
double[ ] estatura = {1.50, 2.67, 3.5};
String[ ] nombre = {"Carlos", "Manuel", "Alex"};
char[ ] sexo = {'m', 'f'};
boolean[ ] = {true, false};

16

Taller de Programacin de Aplicaciones

String[ ] nombre = new String[4];


nombre[0] = "Carlos";
nombre[1] = "Ana";
nombre[2] = "Miguel";
nombre[3] = "Juan";
nombre[4] = "Teo";

public class Arreglos{


public static void main(String [] args){
int mayor, menor, suma;
int [] nums = {3,4,8,2};
suma = 0;
menor = nums[0];
mayor = nums[0];

for(int i=0; i <nums.length; i++){


if(nums[i]>mayor){
mayor=nums[i];
}
if(nums[i]<menor){
menor=nums[i];
}
suma+=nums[i];
}
System.out.println(El mayor es +mayor);
System.out.println(El menor es +menor);
System.out.println(La suma es +suma);
}
}

17

Taller de Programacin de Aplicaciones


4.9.1.

Paso de Arreglos como Parmetros y Devolucin

public class ArregloArrays {


public static void main(String[] args) {
int mayor, menor, suma;
int [] nums = {3,4,8,2};
int [] esperado = new int [5];
int [] data;
suma = sumar_arreglo(nums);
System.out.println("La suma es "+suma);

System.out.println("El

array

resultado

"+esperado[0]);
System.out.println("El array resultado es "+data[0]);
}
static int sumar_arreglo(int numeros[]){
int s = 0;
for (int i=0; i <numeros.length;i++){
s+=numeros[i];
}
return s;
}//fin suma

static int [] regresaNumeros(int n){


int [] nums = new int [5];
for (int i=0; i <nums.length; i++){
nums[i]=n+i+1;
}
return nums;
}//regresaNumeros
}

18

es

Taller de Programacin de Aplicaciones


4.9.2.

Arrays Multidimensionales.

La declaracin es:
int [][] adata = new int [5][5];

//Ejemplo programa arrays multidimensionales


import java.util.Random;
public class MultiDim {
public static void main(String[] args) {
int [][] adata = new int [5][5];
int sumamd;
Random mir = new Random();
int [][] esperado = new int [5][5];
int [][] datamd;
//k[1][3] = 28;
//Rellenar la matriz de numero aleatorios
System.out.println("Numero Aleatorio: "+mir.nextInt());
for (int i=0; i<adata.length-1; i++){
for (int j=0; j<adata.length-1; j++){
adata[i][j] = mir.nextInt();
}
}//fin for

sumamd = sumar_arreglomd(adata);
System.out.println("La suma de los Elementos del Array
son: "+sumamd);
esperado = crear_arreglomd(5);
System.out.println("El primer elemento es: "+esperado[0]
[0]);
datamd =

crear_arreglomd(10);

System.out.println("El primer elemento es: "+datamd[0]


[0]);
imprimir_arreglomd(esperado);
}

19

Taller de Programacin de Aplicaciones


static int sumar_arreglomd(int numeros[][]){
int s = 0;
for (int i=0; i<numeros.length-1; i++){
for (int j=0; j<numeros.length-1; j++){
s += numeros[i][j] ;
}
}
return s;
}//fin suma_arreglomd

static void imprimir_arreglomd(int numeros[][]){


for (int i=0; i<numeros.length-1; i++){
for (int j=0; j<numeros.length-1; j++){
System.out.print(" "+numeros[i][j]);
}
System.out.println(" ");
}
}//fin suma_arreglomd

static int[][] crear_arreglomd(int max){


int [][] nums = new int [5][5];
Random localr = new Random();

for (int i=0; i<nums.length-1; i++){


for (int j=0; j<nums.length-1; j++){
nums[i][j] = localr.nextInt(max);
}
}
return nums;
}//fin suma_arreglomd

}//fin clase MultiDim

20

Taller de Programacin de Aplicaciones

import java.util.Random;
public class ArrayMD_I{
public static void main(String[] args) {
int [][] irregular = new int[3][];
irregular[0] = new int[4];
irregular[1] = new int[6];
irregular[2] = new int[3];

for (int i=0; i<irregular.length-1; i++){


for (int j=0; j<irregular[i].length-1; j++){
irregular[i][j] = 0;
}
}
irregular = crear_arreglomd_i(4);
}

static int[][] crear_arreglomd_i(int max){


int laux;
int [][] nums = new int [3][];
nums[0] = new int[4];
nums[1] = new int[6];
nums[2] = new int[3];

Random localr = new Random();

for (int i=0; i<nums.length-1; i++){


laux = nums[i].length-1;
for (int j=0; j<laux; j++){
nums[i][j] = localr.nextInt(max);
}
}

21

Taller de Programacin de Aplicaciones


return nums;
}//fin crear_arreglomd_i
}

4.10. Definicin de Tipos Enumerados.

enum Calificaciones{EXCELENTE, BUENO, REGULAR, MALO};

public class Alumno{


private Calificaciones resultado;

public void setResultado(Calificaciones c){


resultado

= c;

public Calificaciones getResultado(){


return resultado;
}
}
class Examenes {
public static void main(String[] args) {
// TODO code application logic here
Alumno juan = new Alumno();
juan.setResultado(Calificaciones.MALO);
System.out.println(juan.getResultado());
}
}

4.10.1 Datos enumerados con constructores y datos enumerados.

enum Calificaciones{
EXCELENTE(3), BUENO(2), REGULAR(1), MALO(0);

22

Taller de Programacin de Aplicaciones


int valornumerico;

Calificaciones(int v){
valornumerico=v;
}

int muestravalor(){
return valornumerico;
}
};

class Alumno{
private Calificaciones resultado;

public void setResultado(Calificaciones c){


resultado

= c;

public Calificaciones getResultado(){


return resultado;
}

public void getval(){


for(Calificaciones cal:Calificaciones.values()){
System.out.println(cal);
}
}
}//class alumno

class Calificacion {
public static void main(String [] args){
Alumno jose= new Alumno();

23

Taller de Programacin de Aplicaciones


Calificaciones cal;

jose.setResultado(Calificaciones.EXCELENTE);
cal = jose.getResultado();

System.out.println("Calificacion Obtenida:
"+cal.muestravalor());
}
}//fin Calificacion

4.11. Mtodos con nmero variable de Argumentos.

public class Varios {


public static void main(String []args){
System.out.println(totales(2,5,8,9));
System.out.println(totales(2,5));
}

public static int totales(int ... argumentos){


int contar = 0;

System.out.println("Total Argumentos:"+
argumentos.length);
for(int i:argumentos){
System.out.println(i);
contar++;
}
return contar;
}
}

24

Taller de Programacin de Aplicaciones


5. CLASES DE USO GENERAL.

Java cuenta con un gran nmero de libreras de clases generales,


tan solo Java SE tiene mas de 10000 clases con su
correspondiente conjunto de mtodos, estas clases pueden
dividirse en:

Clases bsicas.
Clases de envoltorio.
Clases de E/S.
Colecciones.

1. Paquetes.

La organizacin de las clases se hacen en paquetes los cuales se


administran en directorios e incluso en subdirectorios, ejemplo:

Java.awt.Shape
Paquete.subpaquete.Clase

Para poder utilizar un paquete se debe llmar con la siguiente


sentencia: import nombre_paquete, ejemplo: import java.util.*;

2. El API de JAVA.

El Api de java se encuentra en la siguiente direccin web:


http://docs.oracle.com/javase/7/docs/api/, direccin en la cual
pueden encontrarse la documentacin respectiva.

25

Taller de Programacin de Aplicaciones

26

Taller de Programacin de Aplicaciones

5.1. La Clase String


Administra cadenas de caracteres no modificables.
CONSTRUCTOR

String()

DESCRIPCIN
Constructor por defecto. El nuevo String toma el
valor ""
String s = new String();
//crea el string s
vaco.
Equivale a:
String s = "";

String(String s )

Crea un nuevo String, copiando el que recibe


como parmetro.
String s = "hola";
String s1 = new String(s);
//crea el String s1 y le copia el contenido de s

String( char[] v )

Crea un String y le asigna como valor los


caracteres contenidos en el array recibido como
parmetro.
char [] a = {'a', 'b', 'c', 'd', 'e'};
String s = new String(a);
//crea String s con valor "abcde"

String(char[] v, int
pos, int n)

Crea un String y le asigna como valor los n


caracteres contenidos en el array recibido como
parmetro, a partir de la posicin pos.
char [] a = {'a', 'b', 'c', 'd', 'e'};
String s = new String(a, 1, 3);
//crea String s con valor "bcd";

Mtodos de la Clase String.

MTODO

DESCRIPCIN

length()

Devuelve la longitud de la cadena

indexOf(caracter)

Devuelve
la
posicin
aparicin de carcter

lastIndexOf(caracter)

Devuelve
la
posicin
aparicin de carcter

charAt(n)

Devuelve el
posicin n

substring(n1,n2)

Devuelve la subcadena comprendida


las posiciones n1 y n2-1

toUpperCase()

Devuelve la cadena convertida a maysculas

27

carcter

de

de

que

la

primera

la

est

ltima

en

la

entre

Taller de Programacin de Aplicaciones

toLowerCase()

Devuelve la cadena convertida a minsculas

equals("cad")

Compara dos cadenas y devuelve true si son


iguales

equalsIgnoreCase("cad")

Igual
que equals pero
maysculas y minsculas

compareTo(OtroString)

Devuelve 0 si las dos cadenas son iguales.


<0 si la primera es alfabticamente menor
que la segunda >0 si la primera es
alfabticamente mayor que la segunda.

compareToIgnoreCase(OtroString)

Igual que compareTo pero


maysculas y minsculas.

valueOf(N)

Mtodo esttico. Convierte el valor N a


String. N puede ser de cualquier tipo.

sin

sin

considerar

considerar

Para ms informacin puedes consultar:


http://docs.oracle.com/javase/7/docs/api/index.html?java/lang/String.html

5.2. La Clase Math

Las funciones matemticas vienen disponibles en la clase Math,


algunas de sus funciones miembros son:
Funcin
matemtica
abs

Significado

Ejemplo de uso

Resultado

Valor absoluto

int x =

x = 2;

28

Taller de Programacin de Aplicaciones

Math.abs(2.3);
double x =

x =

Math.atan(1);

0.78539816339744;

double x =

x =

Math.sin(0.5);

0.4794255386042;

double x =

x =

Math.cos(0.5);

0.87758256189037;

double x =

x =

Math.tan(0.5);

0.54630248984379;

Exponenciacin

double x =

x =

neperiana

Math.exp(1);

2.71828182845904;

Logaritmo

double x =

x =

neperiano

Math.log(2.7172);

0.99960193833500;

atan

Arcotangente

sin

Seno

cos

Coseno

tan

Tangente

exp

log

pow

Potencia

round

Redondeo

Random

Nmero aleatorio

double x =
Math.pow(2.3);
double x =
Math.round(2.5);

x = 8.0;

x = 3;

double x =

x =

Math.ramdom();

0.20614522323378;

Ejemplo 1:
Array[k] = (int) (Math.random());

Ejemplo 2:

29

Taller de Programacin de Aplicaciones

public class Maxc {


public static void main(String[] args) {
int array_valores[] = {10,1001,18,180,150};
int max_ini, v_maximo = 0;
max_ini=array_valores[0];

for (int j=0;j<array_valores.length;j++){


v_maximo = Math.max(max_ini, array_valores[j]);
max_ini = v_maximo;
}
System.out.println("valor maximo es: "+v_maximo);
}
}

5.3. La Clase Date.


Los objetos Date representan fechas y horas con precisin de un
milisegundo, as

como permiten

manipular la

fecha y

obtener

informacin de la misma; sin embargo, la mayora de los mtodos


estn obsoletos.
Ejemplo:
import java.util.*;
public class fechas{
public static void main(String[] args){
Date mfecha = new Date();
//transcurrido desde el 01 de enero 1970
Date otrafecha = new Date(20000000000L);

30

Taller de Programacin de Aplicaciones

System.out.println(mfecha.toString());
System.out.println(otrafecha.toString());
}
}
5.4. La Clase Calendar.
La clase calendar surge como complement de la clase Date
para el manejo de fechas de calendario.
import java.util.*;

public class Calendario {


public static void main(String[] args){
Calendar calendario = Calendar.getInstance();
String fecha = "";
fecha+= calendario.get(Calendar.DAY_OF_MONTH)+"/";
//get devuleve valores entre 0 y 11
fecha+= calendario.get(Calendar.MONTH)+1+"/";
fecha+= calendario.get(Calendar.YEAR)+1+"/";
System.out.println("Hoy es: "+fecha);
}
}
5.5. Entradas y Salidas en Java.
Las principales clases de este paquete:

31

Taller de Programacin de Aplicaciones

Salida

PrintStream

Entrada

InputStream

BufferedReader
InputStreamReader

Para la salida de datos la clase system proporciona el atributo


out y lo mtodos print(String cadena) y println(String cadena)
para mostrar cadenas al dispositivo de salida, de la misma forma
existen los mtodos format y printf.
-

InputStreamReader.
InputStreamReader mis;
mis = InputStreamReader(System.in);

BufferedReader.
BufferedReader mbr;
Mbf = new BufferedReader();
String s = bf.readLine();

Ejemplo:
import java.io.*;
public class Inputs {
public static void main(String[] args) throws IOException {
String cad;
InputStreamReader myr;
BufferedReader mbr;
//Objeto InputStreamReader
myr = new InputStreamReader(System.in);

32

Taller de Programacin de Aplicaciones

//Objeto BufferedReader
mbr = new BufferedReader(myr);
System.out.println("Introduzca su nombre");
cad = mbr.readLine();
System.out.println("Te llamas: "+cad);
}
}

El mtodo readLine() lee datos tipo String por lo que si es


necesario se deben convertir a numricos, ejemplo:
Long numero = Long.parseLong(cadena);
5.6. Expresiones Regulares.
Las expresiones regulares se emplean para la bsqueda de
determinados patrones que pueden cumplir con determinadas reglas
y ser mltiples opciones, por ejemplo:
SIS[TE]MAS, lo cual indica que en el patrn pueden reemplazarse
cualquiera de las letras dentro de los corchetes, por ende se
pueden formar las cadenas: SISTMAS o SISEMAS.
Dentro de estas reglas tambin pueden aplicar los siguientes
operadores:
-

*(asterisco): puede reemplazarse por varios caracteres no


interesa el carcter ni el nmero de veces.

? (interrogacin): puede reemplazar un caracter.

(A-C): pueden reemplazarse por caracteres de la A a la C


(A, B y C).

33

Taller de Programacin de Aplicaciones

Ejemplo:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class MatchDemo {
private static final String EXREG = "www\\.\\w*\\.com";
//private

static

final

String

EXREG

"www\\.\\w*\\.com\\.pe";
private

static

String

DATA

"web

de

peruanos

wwww.peru.com ";
public static void main(String[] args) {
Pattern p = Pattern.compile(EXREG);
DATA += "diversion encontraras en www.terra.com.pe";
DATA += "y una pagina de deportes www.libero.pe";
Matcher m = p.matcher(DATA);
int count = 0;
while(m.find()) {
count++;
System.out.println("Patron: "+m.group());
System.out.println("Coincidencia :" + count);
System.out.println("Inicio: " + m.start());
System.out.println("Fin: " + m.end());
}

34

Taller de Programacin de Aplicaciones

}
}

5.7. La Clase ARRAYLIST


Arraylist es una coleccin basa en ndices, en que cada objeto
de la lista tiene un ndice de la ubicacin, el ndice inicia
en 0.
Algunos mtodos que proporciona ArrayList son:
MTODO

DESCRIPCIN

size()

Devuelve el nmero de elementos (int)

add(X)

Aade el objeto X al final. Devuelve true.

add(posicin, X)

Inserta el objeto X en la posicin indicada.

get(posicion)

Devuelve el elemento que est en la posicin


indicada.

remove(posicion)

Elimina el elemento que se encuentra en la


posicin
indicada.
Devuelve
el
elemento
eliminado.

remove(X)

Elimina la primera ocurrencia del objeto X.


Devuelve true si el elemento est en la lista.

clear()

Elimina todos los elementos.

set(posicin, X)

Sustituye el elemento que se encuentra en la


posicin indicada por el objeto X. Devuelve el
elemento sustituido.

contains(X)

Comprueba si la coleccin contiene al objeto


X. Devuelve true o false.

indexOf(X)

Devuelve la posicin
existe devuelve -1

35

del

objeto

X.

Si

no

Taller de Programacin de Aplicaciones


import java.io.*;
import java.util.*;
public class Registro {
public static void main(String[] args) throws IOException {
ArrayList Notas = new ArrayList();
String opcion = null;
BufferedReader bf=new BufferedReader(new
InputStreamReader(System.in));
do{
System.out.println("Elija una opcion:");
System.out.println("1. Aadir Nota");
System.out.println("2. Mostrar Notas");
System.out.println("3. Salir");
opcion = bf.readLine();
switch(Integer.parseInt(opcion)){
case 1:
double nota;
System.out.println("Ingrese la Nota");
nota=Double.parseDouble(bf.readLine());
Almacenar(nota, Notas);
break;
case 2:
MuestraTodas(Notas);
break;
}//fin switch
}while(!opcion.equals("3"));
}//fin main
static void Almacenar(double n, ArrayList Notas){
//Se debe convertir a Objeto para aadir en el ArrayList
Notas.add(n);
}//fin Almacenar
36

Taller de Programacin de Aplicaciones

static void MuestraTodas(ArrayList Notas){


String s=null;
int i=0;
for (Iterator it = Notas.iterator(); it.hasNext();) {
Object notita = it.next();
//s=(String)Notas.get(i);
System.out.println(Notas.get(i));
i++;
}
}//MuestraTodas
}//fin clase

5.8. La Clase Hashtable.


5.8.1. Algoritmos Hash.
A las funciones hash tambin llamadas funciones picadillo,
funciones resumen o funciones de digest. Una funcin hash H es
una funcin computable mediante un algoritmo,
H: U M
x h(x),
que tiene como entrada un conjunto de elementos, que suelen ser
cadenas, y los convierte (mapea) en un rango de salida finito,
normalmente cadenas de longitud fija. Es decir, la funcin acta
como una proyeccin del conjunto U sobre el conjunto M.

37

Taller de Programacin de Aplicaciones

import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Hash {


//algoritmos de encriptacin
public static
384","SHA-512"};

String[] algoritmos={"MD2","MD5","SHA-1","SHA-256","SHA-

/***
* Convierte un arreglo de bytes a String usando valores hexadecimales
* @param digest arreglo de bytes a convertir
* @return String creado a partir de digest
*/
private static String toHexadecimal(byte[] digest){
String hash = "";
for(byte aux : digest) {
int b = aux & 0xff;
if (Integer.toHexString(b).length() == 1) hash += "0";
hash += Integer.toHexString(b);
}
return hash;

38

Taller de Programacin de Aplicaciones


}
/***
* Encripta una cadena mediante algoritmo de resumen de mensaje.
* @param cadena texto a encriptar
* @param algoritmo algoritmo de encriptacion, puede ser: MD2, MD5, SHA-1,
SHA-256, SHA-384, SHA-512
* @return mensaje encriptado
*/
public static String getHash(String cadena, int tipoAlgoritmo){
String sdigest=null;
byte[] digest = null;
byte[] buffer = cadena.getBytes();
try {
MessageDigest
MessageDigest.getInstance(algoritmos[tipoAlgoritmo]);

messageDigest

messageDigest.reset();
messageDigest.update(buffer);
digest = messageDigest.digest();
} catch (NoSuchAlgorithmException ex) {
System.out.println("Error creando Hash");
}
//sdigest = new String(digest);
//return sdigest;
return toHexadecimal(digest);
}
//El codigo comentado es solo para probar la funcionalidad.
public static void main(String[] args){
System.out.println("hola"+ " MD2 "+ getHash("hola",0));
System.out.println("hola"+ " MD5 "+ getHash("hola",1));
System.out.println("hola"+ " SHA-1 "+ getHash("hola",2));

39

Taller de Programacin de Aplicaciones


System.out.println("hola"+ " SHA-256 "+ getHash("hola",3));
System.out.println("hola"+ " SHA-384 "+ getHash("hola",4));
System.out.println("hola"+ " SHA-512 "+ getHash("hola",5));
}
}

5.8.2. Mtodos de la Clase Hashtable.


Algunos mtodos que proporciona ArrayList son:
MTODO

DESCRIPCIN

Object put (Object key,


Object valor)

Aade a la coleccin el objeto valor, asignandole


la clave especificada en key. En caso de que
exista esa clave (key) en la coleccin, el objeto
que tenia asignada esa clave, se sustituye por el
objeto valor, devolviendo el objeto sustituido.
Ejemplo:
Hastable hs = new Hastable();
hs.put("a21","pepito");
System.out.println("Antes se llamaba" +
hs.put("a21","luis"));

boolean
containsKey(Object key)

Indica si la clave especificada existe ya en la


coleccin.

Object get (Object key)

Devuelve el valor en forma de objeto que tiene


asociada la clave que se indica en el parmetro.
En caso de que no exista ningn objeto con esa
clave, no habr nada y devolver null.

Object remove(Object
key)

Elimina de la coleccin, el valor cuya clave se


especifica en el parmetro. En caso de que no
exista ningn objeto con esa clave, no habr nada
y devolver null, si existe, eliminara el objeto y
devolvera una referencia de tipo objeto del mismo.

size()

Devuelve el numero de objetos almacenados en la


coleccin.

Enumeration keys()

Devuelve un objeto enumeration que permite iterar


sobre le conjunto de claves.

import java.io.*;
import java.util.*;

40

Taller de Programacin de Aplicaciones

public class GestionNombres {


public static void main (String [] args) throws IOException
{
Hashtable nombres = new Hashtable();
String opcion;
BufferedReader
InputStreamReader(System.in));

bf

new

BufferedReader(new

do
{
System.out.println("Eliga una opcion:");
System.out.println("1.- Aadir nombre");
System.out.println("2.- Eliminar nombre");
System.out.println("3.- Mostrar todos los nombres");
System.out.println("4.- Salir \n");
opcion = bf.readLine();
switch(Integer.parseInt(opcion))
{
case 1:
String nom,dni;
System.out.println("Introduce el nombre: ");
nom = bf.readLine();
System.out.println("DNI: ");
dni = bf.readLine();
almacenarNombre(nom,dni,nombres);
break;
case 2:
String d;
System.out.println("Introduzca el dni: ");

41

Taller de Programacin de Aplicaciones


d = bf.readLine();
eliminarNombre(d,nombres);
break;
case 3:
mostrarTodos(nombres);
break;
}
} while(!opcion.equals("4"));
}

static void almacenarNombre(String n, String k, Hashtable lista)


{
if(!lista.containsKey(k))
lista.put(k, n);
}

static void eliminarNombre(String k, Hashtable lista)


{
if(lista.containsKey(k))
lista.remove(k);
}

static void mostrarTodos(Hashtable lista)


{
System.out.println("En la lista: ");
Enumeration claves = lista.keys();
while (claves.hasMoreElements())
{

42

Taller de Programacin de Aplicaciones


String k = (String)claves.nextElement();
System.out.println(k + " - " + lista.get(k));
}
}
}

43

You might also like