Vous êtes sur la page 1sur 34

U.S.B.

CARRERA INGENIERIA DE
SISTEMAS

PROGRAMACION II

Guía de laboratorios en Java

Lic. Katya Maricela Pérez Martínez


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

GUIA DE LABORATORIO

Escribir los siguientes programas en java.


1. Escribir un programa para imprimir en pantalla “MI PRIMER PROGRAMA”

//primer programa
class ejer1
{
public static void main (String args[])
{
System.out.println ("mi primer programa");
}
}

2. Escribir un programa para sumar dos números enteros desde el programa

/programa para sumar dos numeros de tipo entero

class ejer2
{
public static void main (String args[])
{
int A, B,C;
A = 3;
B = 6;
C = A + B;
System.out.println (" la suma de " + A + "+" + B + " = " + C);

}
}

3. Escribir un programa para verificar si un número dado por el ususario es par o impar

//programa para verificar si un numero es par o impar


import java.io.*;

class ejer3
{
public static void main (String args[]) throws IOException
{
String dato;
int A;

InputStreamReader isr = new InputStreamReader (System.in);


BufferedReader br = new BufferedReader (isr);

Lic. Katya Maricela Pérez Martínez Page 2


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
System.out.println ("Ingrese un numero....");
dato = br.readLine ();
A = Integer.parseInt (dato);
if (A % 2 == 0)
System.out.println ("Es un numero par ");
else
System.out.println ("Es un numero impar ");

}}

4. Escribir un programa para calcular el volumen de una circunferencia, dado el radio por el
usuario.

//PROGRAMA PARA CALCULAR EL VOLUMEN DE UNA CIRCUNFERENCIA


import java.io.*;
import java.math.*;

class ejer4
{
public static void main (String args[]) throws IOException
{
double r, v;
String dato;
final double pi = 3.1415;

InputStreamReader isr = new InputStreamReader (System.in);


BufferedReader br = new BufferedReader (isr);

System.out.println ("Cual es el radio de la


circunferencia ?....");
dato = br.readLine ();
r = Float.valueOf (dato).floatValue ();
v = pi * r * r;
System.out.println ("el volumen de la circunferencia es " + v);

}
}

Lic. Katya Maricela Pérez Martínez Page 3


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

5. Escribir un programa para leer e imprimir los datos de un empleado

//PROGRAMA PARA LEER LOS DATOS DE UN EMPLEADO


import java.io.*;
class ejer5
{
static int CI;
static String nombre;
static char sexo;
static String cargo;
static double sueldo;

static String dato;

public static void main (String args[]) throws IOException


{
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader br = new BufferedReader (isr);

System.out.println ("Ingrese los datos del empleado....");

System.out.print ("CI............");
dato = br.readLine ();
CI = Integer.parseInt (dato);

System.out.print ("NOMBRE..........");
nombre = br.readLine ();

System.out.print ("SEXO............");

sexo = br.readLine ().charAt (0);


System.out.print ("CARGO............");
cargo = br.readLine ();
System.out.print ("SUELDO..........");
dato = br.readLine ();
sueldo = Double.valueOf (dato).doubleValue ();

sueldo = Double.valueOf (dato).doubleValue ();

System.out.println ("----- IMPRIMIENDO DATOS DEL EMPLEADO --------


");

System.out.println ("CI:............" + CI);


System.out.println ("NOMBRE:........" + nombre);
System.out.println ("SEXO:.........." + sexo);
System.out.println ("CARGO:........." + cargo);
System.out.println ("SUELDO:........" + sueldo);
}
}

Lic. Katya Maricela Pérez Martínez Page 4


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

EJERCICIOS PROPUESTOS LABORATORIO

1. Escribir un programa en Java que imprima por pantalla la frase “Hola, estoy programando en
Java”.

2. Escribir un programa para imprimir en pantalla:


¿??????????????????????????????????????????????????????

**************************************************??

*** ESTRUCTURAS DE DATOS ***??

*** ***??

*** CARRERA INGENIERIA DE SISTEMAS ***??

*** ***??

*** TU NOMBRE ***??

*** ***??

*** GESTION 2012 ***??

*** ***??

**************************************************??

¿??????????????????????????????????????????????????????

3. Escribir un programa en Java que imprima por pantalla la suma de 456 y 567.
4. Escribir un programa en Java que imprima por pantalla la resta de 1234 y 532.
5. Escribir un programa en Java que imprima por pantalla la multiplicación de 1234 y 532.
6. Escribir un programa en Java que imprima por pantalla la división de 54 entre 67
7. Escribir un programa para verificar si un número dado por el usuario es positivo o negativo.
8. Escribir un programa en Java que lea dos números del teclado y diga cual es el mayor y cual
el menor.
9. Ingresar el nombre y la calificación de un estudiante e imprimir su nombre su nota y si está
APROBADO o REPROBADO.
10. Leer un monto en Bolivianos y convertir a dólares.
11. Hallar el volumen de una circunferencia utilizando la siguiente fórmula

2
v   r 2
3

12. Leer los datos de un paciente (nombre, peso, estatura, temperatura y presion ) e imprimir
los datos

Lic. Katya Maricela Pérez Martínez Page 5


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

Java - Estruturas Repetitivas

OPERADORES ARITMETICOS BINARIOS EN JAVA

Operador Uso Descripción


+ op1 + op2 Suma op1 y op2
- op1 - op2 Resta op2 de op1
* op1 * op2 Multiplica op1 por op2
/ op1 / op2 Divide op1 por op2
% op1 % op2 Calcula el resto de dividir op1 entre op2

Operaciones con "++" y "--"

Operador Uso Descripción


++ op++ Incrementa op en 1; se evalúa al valor anterior al incremento
++ ++op Incrementa op en 1; se evalúa al valor posterior al incremento
-- op-- Decrementa op en 1; se evalúa al valor anterior al incremento
-- --op Decrementa op en 1; se evalúa al valor posterior al incremento

OPERADORES RELACIONALES EN JAVA

Operador Uso Devuelve verdadero si


> op1 > op2 op1 es mayor que op2
>= op1 >= op2 op1 es mayor o igual que op2
< op1 < op2 op1 es menor que op2
<= op1 <= op2 op1 es menor o igual que op2
== op1 == op2 op1 y op2 son iguales
!= op1 != op2 op1 y op2 son distintos

OPERADORES LOGICOS

Operador Uso Devuelve verdadero si...


&& op1 && op2 op1 y op2 son ambos verdaderos, condicionalmente evalúa op2
& op1 & op2 op1 y op2 son ambos verdaderos, siempre evalúa op1 y op2
|| op1 || op2 op1 o op2 son verdaderos, condicionalmente evalúa op2
| op1 | op2 op1 o op2 son verdaderos, siempre evalúa op1 y op2
! ! op op es falso

Lic. Katya Maricela Pérez Martínez Page 6


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

GUIA DE LABORATORIO N°1


ESTRUCTURAS REPETITIVAS

“Desde el punto de vista de un programador, el usuario no es más que un


periférico que teclea cuando se le envía una petición de lectura”

P. Williams

1. Escribir un programa para sumar n términos de la siguiente sumatoria.

Ejemplo: para n=3

1 1 1 11
+ + =
2(1) 2(2) 2(3) 12

Solucion.

n: sera la cantidad de terminos

sum: la suma de los n terminos, es de tipo doble ya que el resultado es real

Diseñamos el TAD

Guia11

n : entero
sum: doble

Sumatoria(N): doble
main()

Implementamos a continuación el programa en java

Lic. Katya Maricela Pérez Martínez Page 7


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

//PROGRAMA PARA CALCULAR LA SUMATORIA


import java.io.*;
class Guia11
{
static int n;
static double sum;

static double Sumatoria (int N)


{
double s = 0;
int c;

for (c = 1 ; c <= N ; c++)


{
s = s + 1 / (2 * (double) c);
System.out.print ("1/" + (2 * c) + " + ");
}
return s;
}

public static void main (String args[]) throws IOException


{
String dato;
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader br = new BufferedReader (isr);
System.out.println (" SUMATORIA DE 1/2+ 1/4 + 1/6+ 1/8 + ...");
System.out.println ("Cuantos terminos desea sumar....");
dato = br.readLine ();
n = Integer.parseInt (dato);
sum = Sumatoria (n);
System.out.println ("\n\n La suma es " + sum);
}
}

2. Escribir un programa para sumar n términos de la siguiente sumatoria.

1  4 + 2  5 + 3  6 + 4  7 + 5 8 + 6  9 + ...

Ejemplo: para n = 4

Suma = 1  4 + 2  5 + 3  6 + 4  7

Suma= 4 + 10 + 18 + 28 = 60

Lic. Katya Maricela Pérez Martínez Page 8


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

Solucion.

n: sera la cantidad de terminos

sum: la suma de los n terminos, es de tipo entero largo.

Diseñamos el TAD

Guia12

n : entero
sum: entero largo

SumatoriaII(N): entero largo


main()

Implementamos a continuación el programa en java

//PROGRAMA SUMATORIA II
import java.io.*;
class Guia12
{
static int n;
static long sum; //declaramos sum como entero largo

static long SumatoriaII (int N)


{
int i = 1, c = 4;
long S = 0, T;

while (i <= N)
{
T = i * c;
S = S + T;
c++;
i++;
System.out.print (T + " + ");
}
return S;
}

Lic. Katya Maricela Pérez Martínez Page 9


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

public static void main (String args[]) throws IOException


{
String dato;
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader br = new BufferedReader (isr);

System.out.println (" SUMATORIA DE 1x4 + 2x5 + 3x6 + 4x7 + 5x8 ...");


System.out.println ("Cuantos terminos desea sumar....");
dato = br.readLine ();
n = Integer.parseInt (dato);
sum = SumatoriaII (n);
System.out.println ("\n\n La suma es " + sum);
}
}

3. Escribir un programa para sumar n términos de la siguiente sumatoria.

n
i i 1

i 1 i  2

Ejemplo: para n=4

𝟏 𝟐𝟏 𝟑𝟐 𝟒𝟑 𝟏𝟑𝟑
𝟑
+ 𝟒
+ 𝟓
+ 𝟔
= 𝟏𝟎

Solucion.

n: sera la cantidad de terminos

sum: la suma de los n terminos, es de tipo doble ya que el resultado es real

Diseñamos el TAD

Guia13

n : entero
sum: doble

SumatoriaIII(N): doble
main()

Lic. Katya Maricela Pérez Martínez Page 10


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

Implementamos a continuación el programa en java

//PROGRAMA PARA CALCULAR LA SUMATORIA III


import java.io.*;
class Guia13
{
static int n;
static double sum;

static double SumatoriaIII (int N)


{
double s = 0;
long c, num;

for (c = 1 ; c <= N ; c++)


{
num = 1;
for (int i = 1 ; i <= c - 1 ; i++)
num = num * c;
s = s + (double) num / (double)((c + 2));
System.out.print (num + "/" + (c + 2) + " + ");
}
return s;
}

public static void main (String args[]) throws IOException


{
String dato;
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader br = new BufferedReader (isr);
System.out.println (" SUMATORIA DE 1/3+ 2^1/4 + 3^2/5+ 4^3/10 + ...");
System.out.println ("Cuantos terminos desea sumar....");
dato = br.readLine ();
n = Integer.parseInt (dato);
sum = SumatoriaIII (n);
System.out.println ("\n\n La suma es " + sum);
}
}

Lic. Katya Maricela Pérez Martínez Page 11


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

EJERCICIOS PROPUESTOS

1. Escribir un programa para calcular la suma de los n primeros términos de:


1  6 + 2  7 + 3  8 + 4  9 +5 ∙ 10 + ...
Ejemplo: para n=3
1 ∙ 6 + 2 ∙ 7 + 3 ∙ 8 = 44

2. Hallar el valor de la siguiente suma para n términos:

a) 2  3 + 3  4 + 4  5 + 5  6 + 6  7 + ...

b) 3 + 5 + 7 + 9 ...

c) 1  2 + 4  3 + 9  4 + 16  5 + 25  6 + ...

d) 1 + 1/5 + 1/25 + 1/125 + 1/625 + ………

e) 1/2 + 5/4 + 2 + 11/4 + 7/2 + 17/4 + 20/4 +… + 19/2 la razón es ¾

f) 22 + 42 + 62 + 82 +…

2 1 4
g) 1   
3 9 27

1 2 3 4 5
h)    
2 3 4 5 6
1 1 1 1 1 1
i)      
2 3 4 5 6 7
1 1 1 1
j)   
3 6 9 12

3. Escribir un programa para calcular las siguientes sumatorias para n términos, en diferentes
funciones:

n n n
1
a) 
i 1 i
b)  (2i  1) 
i 1
c) i
i 1
2

n n
2i
d)  (1) i  i 
i 1
e)  i! 
i 1

Lic. Katya Maricela Pérez Martínez Page 12


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

GUIA DE LABORATORIO N°2


VECTORES

“Codifica siempre como si la persona que finalmente mantendrá tu código


fuera un psicópata violento que sabe dónde vives”

Martin Golding

1. Escribir un programa para almacenar e imprimir un vector cuyos elementos son:


4,8,9,14 y 22.

Solucion.

T[5]: sera el vector de elementos enteros cuyo tamaño es 5

Diseñamos el TAD

Guia21

T[5]: entero

main()

Implementando en Java

//PROGRAMA PARA ALMACENAR LOS ELEMENTOS 4,8,9, 14, 22


import java.io.*;
class Guia21
{
static int T[]; //declaramos el vector T
public static void main(String arg[])
{
int i;
T=new int[6]; //creamos el vector para 6 elementos

T[1]=4;
T[2]=8;
T[3]=9;
T[4]=14;
T[5]=22;

Lic. Katya Maricela Pérez Martínez Page 13


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

System.out.println("Imprimiendo el vector:");
i=1;
while (i<=5)
{
System.out.println(T[i]);
i=i+1;
}

}
}

2. Escribir un programa para almacenar e imprimir los siete días de la semana en un


vector

Solucion.

dias[7]: sera el vector de elementos de tipo cadena. Tamaño del vector 7.

Diseñamos el TAD

Guia22

dias[7]: cadena

main()

Implementando en Java

//programa para imprimir los dias de la semana


import java.io.*;
class Guia22
{
//declaramos e inicializamos el vector que sera de tipo cadena
static String dias[] = {"Lunes", "Martes", "Miercoles",
"jueves", "viernes", "sabado", "domingo"};

public static void main (String arg[])


{
int i;
System.out.println ("DIAS DE LA SEMANA");
for (i = 0 ; i <= 6 ; i++)
System.out.println (dias [i]);

}
}

Lic. Katya Maricela Pérez Martínez Page 14


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

3. Escribir un programa para leer las notas de N estudiantes (sus nombres y sus notas)
en dos vectores, luego imprimir estos datos y hallar el promedio del curso

Solucion.

Si N = 4

El vector de nombres sera:

NomE = Luis Pedro Maria Gonzalo


1 2 3 4

El vector de notas sera:


Notas = 77 57 90 68
1 2 3 4

Utilizaremos dos vectores como se vio en las graficas anteriores:

NomE[ ]: Vector que Almacena los nombres de los estudiantes y sera de tipo cadena

Notas[ ]: Vector que almacena las notas de dichos estudiantes y sera de tipo entero

N: sera el tamaño del vector, la cantidad de estudiantes.

Diseñamos el TAD

Guia23

N: entero
NomE[N]: cadena
Notas[N]: entero

LeerDatos()
ImprimirDatos()
Promedio(): real
main()

main()

Lic. Katya Maricela Pérez Martínez Page 15


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

Implementando en Java
//programa para leer las notas de N estudiantes (sus nombres y sus notas)
//en dos vectores, luego imprimir estos datos y hallar el promedio del curso

import java.io.*;

class Guia23
{
static String NomE[];
static int Notas[];
static int N;

static void LeerDatos ()


{
int i;

System.out.print ("Ingrese la cantidad de estudiantes....");


N = Lectura.Entero ();

NomE = new String [N + 1];


Notas = new int [N + 1];

for (i = 1 ; i <= N ; i++)


{
System.out.print ("Nombre del estudiante--->");
NomE [i] = Lectura.Cadena ();
System.out.print ("Ingrese su nota --->");
Notas [i] = Lectura.Entero ();

static void ImprimirDatos ()


{
System.out.println (" ESTUDIANTE NOTA");
for (int i = 1 ; i <= N ; i++)
{
System.out.println (" " + NomE [i] + "........." + Notas [i]);
}
}

static float promedio ()


{
Lic. Katya Maricela Pérez Martínez Page 16
float prom = 0;
for (int i = 1 ; i <= N ; i++)
prom = prom + Notas [i];
prom = prom / N;
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

static float promedio ()


{
float prom = 0;
for (int i = 1 ; i <= N ; i++)
prom = prom + Notas [i];
prom = prom / N;
return prom;
}

public static void main (String arg[])


{
float p;

LeerDatos ();
ImprimirDatos ();
p=promedio();

System.out.println("El promedio de las notas es....."+p);


}
}

4. Escribir un programa para registrar en un vector los carnets de los estudiantes que
aprobaron Calculo I y en otro vector registrar los carnets de los estudiantes que
aprobaron Etica, y en un tercer vector los carnets de los que aprobaron ambas
materias.

Solución:

vCalculo[] : vector que tiene los carnets de los estudiantes que aprobaron Calculo

vEtica[]: vector que tiene los carnets de los estudiantes que aprobaron Etica

vComun[]: vector que tiene los carnets de los que aprobaron ambas materias

Lic. Katya Maricela Pérez Martínez Page 17


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

Diseñamos el TAD

Guia24

vCalculo[]: entero
vEtica[N]: entero
vComun[N]: entero

llenarNuevo(d1,d2)
cuantosComunes(d,d2):entero
buscaNum(n,d):boolean
mostrarVector(v,x)
main()

/*Se deben crear dos vectores.


En uno se colocarán los carnet de los estudiantes que aprobaron Cálculo 1,
en otro los que aprobaron Etica.
Crear un tercer arreglo que contenga los carnet de los estudiantes que aprobaron
main()
ambas materias.. */

class Guia24
{

static int [] vCalculo, vEtica, vComun;

public static void main (String arg[])


{
int nCal, nEt, comunes;

System.out.print ("Cuantos alumnos aprobaron CALCULO I?... ");


nCal = Lectura.Entero ();
System.out.print ("Cuantos alumnos aprobaron ETICA ?... ");
nEt = Lectura.Entero ();

vCalculo = new int [nCal];


vEtica = new int [nEt];

System.out.println ("\n Carnets de los alumnos que aprobaron CALCULO I \n ");


llenarVector (vCalculo, nCal);
System.out.println ("\n Carnets de los alumnos que aprobaron ETICA \n ");
llenarVector (vEtica, nEt);
comunes = (cuantosComunes (nCal, nEt));
vComun = new int [comunes];
llenarNuevo (nCal, nEt);
System.out.println ("\nCarnets de los alumnos que aprobaron ETICA Y CALCULO I \n ");
mostrarVector (vComun, comunes);
}

Lic. Katya Maricela Pérez Martínez Page 18


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

static void llenarNuevo (int d, int d2)


{
int pos = 0;
for (int i = 0 ; i < d ; i++)
{
if (buscaNum (vCalculo [i], d2) == true)
{
vComun [pos] = vCalculo [i];
pos++;
}
}
}

/* ME DICE CUANTOS CARNETS ESTAN EN AMBOS VECTORES. TIENE 2 PARAMETROS: d: ES LA


DIMENSION DE vCalculo, d2: DIMENSION DE vEtica. BUSCA CADA ELEMENTO DE vCalculo en
vEtica */

static int cuantosComunes (int d, int d2)


{
int acum = 0;
for (int i = 0 ; i < d ; i++)
{
if (buscaNum (vCalculo [i], d2) == true)
acum++;
}
return acum;
}

/* ESTE METODO INDICA SI UN NUMERO n ESTA EN EL VECTOR vEtica. ADEMAS DE n, TIENE UN


PARAMETRO d, QUE ES LA DIMENSION DE vEtica, NECESARIA PARA CONTROLAR EL FOR */

static boolean buscaNum (int n, int d)


{
for (int i = 0 ; i < d ; i++)
{
if (vEtica [i] == n)
return true;
}
return false;
}

Lic. Katya Maricela Pérez Martínez Page 19


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

/* METODO QUE ASIGNA VALORES A UN VECTOR DE DIMENSION D */

static void llenarVector (int v[], int d)

for (int i = 0 ; i < d ; i++)

System.out.print ("Introduzca el CI del alumno " + i + " ....");

v [i] = Lectura.Entero ();

/* ESTE METODO MUESTRA LOS ELEMENTOS DE UN VECTOR CUALQUIERA CON DIMENSION


CUALQUIERA, EL VECTOR ES EL PARAMETRO V Y LA DIMENSION DEL VECTOR X , SE PENSÓ ASI
PARA PODER UTILIZARLO EN EL VECTOR RESULTADO
*/
static void mostrarVector (int v[], int x)
{
for (int i = 0 ; i < x ; i++)
{
System.out.print (v [i] + " ");

}
}
}

EJERCICIOS PROPUESTOS

1. Escribir un programa para imprimir los signos del zoodiaco que deberán estar
almacenados en un vector. Además deberá mostrar desde que fecha y mes comienza y
hasta que fecha y mes termina un determinado signo

Lic. Katya Maricela Pérez Martínez Page 20


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

2. Se tiene dos vectores de tamaño N, uno de ellos con las estaturas de los estudiantes y el
otro con los nombres de los estudiantes, se pide hallar los estudiantes cuya estatura sea
menor a X. X dado por el usuario. Los vectores deben ser llenados por el usuario.

3. Insertar un nuevo dato Y, después del elemento X en un vector que tiene N elementos.
4. Eliminar el elemento X del vector.
5. Se tiene dos vectores, un vector que tiene las edades de N estudiantes y en el segundo
vector está la frecuencia de estudiantes que están con esa edad, se pide hallar la
frecuencia relativa de cada edad.
Ej. Sean los dos vectores E de edades de N=21 estudiantes y el vector F es el vector de
frecuencia absoluta.

E= 18 19 20 21 22 23 24
1 2 3 4 5 6 7
F= 3 5 4 2 4 2 1
1 2 3 4 5 6 7
6. Leer las temperaturas de N días en un vector y obtener el promedio de las temperaturas
e imprimir los días cuya temperatura es menor a X, X dado por el usuario.

Lic. Katya Maricela Pérez Martínez Page 21


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

GUIA DE LABORATORIO N°3


cadenas

“Primero resuelve el problema. Entonces, escribe el código”

John Johnson

• Las cadenas se utilizan, en java, principalmente para el manejo de entrada-salida, por ejemplo:

1. Mostrar mensajes en pantalla.

2. Introducción de texto por parte del usuario.

3. Manipular archivos. (Los nombres de archivos y carpetas son cadenas)

MANIPULACION DE CADENAS
• Las constantes de cadena van entre comillas dobles, a diferencia de las constantes de carácter
que van entre apostrofes. Por ejemplo: “Esta es constante de cadena”

• Este tipo de dato no es un tipo primitivo, como int, double, etc., sino que es UNA CLASE.

• Esta clase esta en java.lang.String que no necesita ser importada.

• La sintaxis de declaración y declaración e inicialización es:

String nombreDeCadena = new String(); // esta es la forma completa de declaración.

nombreDeCadena = ”Cadena inicial”; // inicialización

String nombreDeCadena = new String("Cadena inicial"); // inicialización y declaración


completa.

• La declaración anterior es debido a que el tipo String es una clase y la variable es la instanciación
de esa clase, esto es, un objeto de tipo String.

• También se puede declarar y declarar e inicializar como sigue:

String nomCadena;

Lic. Katya Maricela Pérez Martínez Page 22


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

String nomCadena = "Cadena inicial";

• Un ejemplo de uso de las cadenas o constantes de cadena es:

System.out.println(“La potencia de “+base+” elevado a la “+ exp+ “ es “+ resultado);

• Donde el símbolo + es llamado el operador de concatenación.

LOS METODOS DE LA CLASE STRING


• Las cadenas no se pueden comparar con = = .

• Los caracteres en las cadenas tienen un número de posición que inicia en CERO y termina en n-
1, donde n es la longitud de la cadena.

• Los siguientes son algunos de los métodos más comunes en aplicaciones java y su sintaxis.

Considerar cadena1 y cadena2 como variables (objetos) de tipo String.

• cadena1.equals(cadena2) regresa true si cadena1 y cadena2 son iguales, false de otra manera.

• cadena1.equalsIgnoreCase(cadena2) regresa true si las cadenas son iguales ignorando las


mayúsculas, false de otra manera.

• cadena1.compareTo(cadena2) regresa un valor entero 0 si son iguales, un valor menor que 0 si


cadena1 es menor lexicográficamente que cadena2 y un valor mayor que 0 si cadena1 es mayor
lexicográficamente que cadena2.

• cadena1.replace(char1,char2) regresa otra cadena remplazando char1 por char2.

Por ejemplo:

cadena2 =”Cochabamba”.replace( 'a','I'); cadena2 tendrá el valor de CochIbImbI

• cadena1.toLowerCase(); regresa otra cadena convirtiendo todas las letras a minúsculas.

• cadena1.toUpperCase(); regresa otra cadena convirtiendo todas las letras a mayúsculas.

• cadena1.trim(); regresa otra cadena sin espacios en blanco, caracteres de nueva línea y
tabuladores del inicio y del final de la cadena original.

• cadena1.length(); regresa el numero, entero, de caracteres en la cadena.

• cadena1.substring(indiceInicial, indiceFinal); regresa una subcadena que empieza en


indiceInicial y termina en indiceFinal-1.

• cadena1.charAt(i); regresa el i-ésimo carácter de la cadena.

Lic. Katya Maricela Pérez Martínez Page 23


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

• cadena1.indexOf(subcadena,indiceInicial); regresa un entero que indica la posición donde


inicia la subcadena en la cadena. Si no existe la subcadena regresa -1.

• cadena1.endsWith(subcadena); regresa true si cadena1 termina con subcadena, false de otra


manera.

• cadena1.concat(cadena2); equivalente a cadena1 + cadena2 .

• String.valueOf(arregloDeCaracteres); regresa la representación String del arreglo de


caracteres. Esta conversión también puede ser realizada usando el constructor de la clase String.
String cadena1= new String(arregloDeCaracteres);

• cadena1.toCharArray(); regresa el arreglo de caracteres correspondiente a cadena1.

CONVERSIÓN DE TIPOS PRIMITIVOS NUMÉRICOS A CADENA


Integer.toString(valorEntero); regresa el valor convertido en cadena.

Double.toString(valorDoble); regresa el valor convertido en cadena.

De manera semejante se convierten los otros tipos primitivos a cadena.

Integer.parseInt(“cadenaNumerica”); regresa el valor numérico entero correspondiente al


valor representado en la cadena.

Double.parseDouble(“cadenaNumerica”); regresa el valor numérico doble correspondiente al


valor representado en la cadena.

De manera semejante se convierten los otros tipos primitivos de cadena a valores numéricos.

Integer.parseInt(“cadenaNumerica”, base); regresa el valor entero de la cadena representado


en la base numérica base.

Integer.toBinaryString(numeroEntero); regresa un valor binario en cadena.

Integer.toHexString(numeroEntero); regresa un valor hexadecimal en cadena.

Integer.toOctalString(numeroEntero); regresa un valor octal en cadena

Lic. Katya Maricela Pérez Martínez Page 24


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

EJERCICIOS RESUELTOS
1. Contar el numero de palabras que hay en una cadena, las palabras están separadas por un
espacio en blanco.

Diseñamos el TAD
Guia31

contar(): entero
main() 2.
3.

/**
* Este programa pretende contar el numero de palabras que hay en una cadena
* las palabras estan separadas por un espacio en blanco
*
**/
public class Guia31
{

public static void main (String args[])


{
String cad = new String ("");
char blanco = ' ';
int cuantos = 0;

System.out.print ("deme la cadena ");

cad = Lectura.Cadena ();


cuantos = contar (cad);

System.out.println ("Habia " + cuantos + "palabras");

Lic. Katya Maricela Pérez Martínez Page 25


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

public static int contar (String st)


{
char a;
int n = 1; // para contar la primera palabra
int i = st.indexOf (" "); //para encontrar la posicion del primer blanco

while (i > 0)
{ // mientras haya espacios en blanco
n++; // sumo 1 al contador
st = st.substring (i + 1); // recorto la cadena para quitar una palabra
i = st.indexOf (" "); // encuentro el siguiente blanco
}

return n++; // para contar la ultima palabra


}
}

2. Escribir un programa para reemplazar todas las ocurrencias de un carácter c en la cadena cad
por un asterisco. El resultado queda en otra cadena. No usar la función replace.

Diseñamos el TAD
Guia32

reemplazar(): Cadena
main() 3.
4.

/**
* Este programa pretende reemplazar todas las ocurrencias de un caracter c
* en la cadena cad por un asterisco. El resultado queda en otra cadena
* No puede usar la funcion replace
**/
public class Guia32
{

public static void main (String args[])


{
String cad = new String (""); // cadena a revisar
char c; // caracter a buscar
String nueva = new String ("");
System.out.print ("deme la cadena….. ");
cad = Lectura.Cadena ();
Lic. Katya Maricela Pérez Martínez Page 26
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

System.out.print ("Deme el caracter ….");


c = Lectura.Caracter ();
nueva = reemplazar (cad, c);
System.out.println ("la cadena nueva es…. " + nueva);

public static String reemplazar (String st, char letra)


{
char a;
String otra = new String (""); // nueva cadena a formar
for (int i = 0 ; i < st.length () ; i++)
{ // recorremos la cadena caracter a caracter
a = st.charAt (i); // tomamos un caracter
if (a == letra)
{ // si el caracter es el buscado
otra = otra + '*'; // colocamos un asterisco en al cadena nueva
}
else
{
otra = otra + a; // de lo contrario colocamos el mismo caracter que tenia
}
}
return otra; // devolvemos la nueva cadena
}
}

3. programa que pretende suprimir todos los espacios en blanco de una cadena cad. El
resultado queda en otra cadena.

Diseñamos el TAD

Guia33

suprime(): Cadena
main()

Lic. Katya Maricela Pérez Martínez Page 27


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

/**
* Este programa pretende suprimir todos los espacios en blanco de una
* cadena cad El resultado queda en otra cadena
**/
public class Guia33
{

public static void main (String args[])


{
String cad = new String ("");
char blanco = ' ';
String nueva = new String ("");
System.out.print ("dame la cadena ….");
cad = Lectura.Cadena ();
nueva = suprime (cad, blanco);
System.out.println ("la cadena nueva es …" + nueva);

public static String suprime (String st, char espacio)


{
char a;
String otra = new String ("");
for (int i = 0 ; i < st.length () ; i++)
{
a = st.charAt (i);
if (a != espacio)
{
otra = otra + a;
}
}
return otra;
}
}

4. Programa que sirve para contar cuántas vocales tiene una palabra o frase.

Diseñamos el TAD Guia34

Contar()
main()

Lic. Katya Maricela Pérez Martínez Page 28


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

// Programa que sirve para contar cuántas vocales tiene una palabra o frase.

class Guia34
{
public static void main (String args[])
{
String palabra;
System.out.print(“Dame una palabra o una frase…..”);
palabra = Lectura.Cadena ();

Contar (palabra);
}

static void Contar (String p)


{
int n = 0, cont = 0;
n = p.length ();
for (int i = 0 ; i < n ; i++)
{
if ((p.charAt (i) == 'a') || (p.charAt (i) == 'e') || (p.charAt (i) == 'i') || (p.charAt (i) == 'o') || (p.charAt (i)
== 'u'))
cont++;
}
System.out.println ("La palabra tiene " + cont + " vocales");
}
}

5. Escribir una aplicación para generar un código a partir del nombre, paterno, materno, dia, mes
y anio de los datos del usuario.

Diseñamos el TAD
Guia35
Nombre: cadena
Paterno: cadena
Materno:cadena
dia: entero
mes: entero
anio:entero

Generar(): cadena
main()

Lic. Katya Maricela Pérez Martínez Page 29


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

// PROGRAMA PARA CODIFICAR UN NOMBRE CON LAS INICIALES DEL nOMBRE+PATERNO+MATERNO


// +DIA+MES+ANIO DE NACIMIENTO
import java.lang.String;
public class Guia35
{
static String Nombre, paterno, materno;
static int dia, mes, anio;

static String Generar (String nom, String pat, String mat, int d, int m, int a)
{
char cod;
String Codigo = new String ("");

cod = nom.charAt (0); //extrae el primer caracter del nombre


Codigo = Codigo + cod; //almacena en Codigo la inicial del nombre
cod = pat.charAt (0); //extrae el primer caracter del apellido paterno
Codigo = Codigo + cod; // concatena la inicial del nombre con la inicial del paterno
cod = mat.charAt (0); //extrae la inicial del apellido materno
Codigo = Codigo + cod; //concatena lo que tenia codigo con la inicial materno
Codigo = Codigo + (Integer.toString (dia)) + (Integer.toString (mes)) + (Integer.toString (anio));
return Codigo;
}

public static void main (String args[])


{
String Micodigo;
System.out.print ("Cual es tu nombre....");
Nombre = Lectura.Cadena ();

System.out.print ("Cual es tu Apellido paterno....");


paterno = Lectura.Cadena ();

System.out.print ("Cual es tu Apellido Materno....");


materno = Lectura.Cadena ();
do
{
System.out.print ("Dia de nacimiento....");
dia = Lectura.Entero ();
}
while (dia > 31 || dia < 1);

Lic. Katya Maricela Pérez Martínez Page 30


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

do
{
System.out.print ("Mes de nacimiento...");
mes = Lectura.Entero ();
}
while (mes > 13 || mes < 1);
do
{
System.out.print ("Anio de nacimiento Ej 97...");
anio = Lectura.Entero ();
Micodigo = Generar (Nombre, paterno, materno, dia, mes, anio);
}
while (anio > 99);
System.out.print (" el codigo generado es ...." + Micodigo);
}
}

EJERCICIOS PROPUESTOS

1. Crear una clase donde dado un string que representa un nombre en mayúsculas
o minúsculas devolver un string formado por las iniciales en mayúsculas seguidas
de un punto.

2. Crear una clase donde dado un string de palabras sustituir cada ocurrencia de un
caracter dado por otro caracter. (por ejemplo: todas las s por *)

3. Escriba una clase que permita eliminar un substring substr de un string str, si no
está devuelve el mismo string sin alterar.

4. Escriba una clase que reciba como parámetro el nombre de una persona, con el
apellido seguido de una coma, un espacio y después el nombre de pila. El
procedimiento debe imprimir el nombre de pila de la persona seguido de su
apellido.

Lic. Katya Maricela Pérez Martínez Page 31


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

Implementación de la CLASE LECTURA, para la lectura de diferentes tipos de


datos en java.

LECTURA.JAVA

import java.io.*;
import java.io.IOException;

public class Lectura


{
public static String Cadena() //operacion que lee cadenas
{
String CadNum="";
try
{
BufferedReader Teclado = new BufferedReader(new InputStreamReader(System.in));
CadNum = Teclado.readLine();
}
catch(IOException e)
{
System.out.println("Error: "+e.getMessage());
}
return(CadNum);
}

public static short EnteroCorto() //operacion que lee un entero corto


{
try
{
return(Short.parseShort(Cadena()));
}

catch(NumberFormatException e)
{
return(Short.MIN_VALUE);
}
}

Lic. Katya Maricela Pérez Martínez Page 32


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

public static long EnteroLargo() //operacion que lee un entero largo


{
try
{
return(Long.parseLong((Cadena())));
}
catch(NumberFormatException e)
{
return(Long.MIN_VALUE);
}
}

public static float Real() // operacion que lee un real


{
try
{
Float NumReal = new Float(Cadena());
return(NumReal.floatValue());
}
catch(NumberFormatException e)
{
return(Float.NaN);
}
}

public static double RealLargo() //operacion para leer un real largo


{
try
{
Double NumReal = new Double(Cadena());
return(NumReal.doubleValue());
}
catch(NumberFormatException e)
{
return(Double.NaN);
}
}

Lic. Katya Maricela Pérez Martínez Page 33


[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II

public static int Entero() //operacion que lee un entero


{
try
{
return(Integer.parseInt(Cadena()));
}

catch(NumberFormatException e)
{
return(Integer.MIN_VALUE);
}
}

public static char Caracter() //operacion para leer un caracter


{
try
{
return(Cadena().charAt(0));
}
catch(Exception e)
{
return('\0');
}

}
public static char CaracterMayuscula() //operacion para leer un character en mayuscula
{
try
{
String Temp;
Temp = Cadena().toUpperCase();
return(Temp.charAt(0));
}
catch(Exception e)
{
return('\0');
}

}
}

Lic. Katya Maricela Pérez Martínez Page 34