Vous êtes sur la page 1sur 13

E.F.P.

Ingeniera de Sistemas
IS 141 (Algoritmos)

Laboratorio 11 y 12

CADENAS
Las cadenas en Java son objetos de la clase predefinida Java.lang. Siempre que
aparecen constantes entre comillas dobles el compilador de Java crea automticamente
un objeto String.

MTODOS PRINCIPALES:
Para poder aplicar estos mtodos es necesario crear un objeto String.

int length(): devuelve la longitud de la cadena (String), incluyendo espacios en blanco.


La longitud siempre es una unidad mayor que el ndice asociado al ltimo carcter de la
String.
Ejemplo:

Por consola:
Algoritmos
El tamao de la cadena es 10

int indexOf(String str, int indice): devuelve el ndice en el que aparece por primera
vez la String del primer argumento en la que se aplica el mtodo, a partir del ndice
especificado en el segundo argumento. Recordar que una String est indexada. Si el
ndice a partir del que se inicia la bsqueda no existe o la String no aparece, devuelve
-1.
Ejemplo:

Por consola:
-1 porque la bsqueda se inicia a partir de un ndice que no existe ya que el ndice
mayor es la longitud de la String -1.

int indexOf(char ch): devuelve el ndice en el que aparece por primera vez el carcter
que se le pasa al argumento. Si no se encuentra el carcter devuelve -1.
Se observa que el nombre de este mtodo es igual al anterior aunque su nmero de
argumentos es distinto adems de su tipo. A esto, en Java, se le llama sobrecarga de

Docente: Jennifer Pillaca De La cruz

Pgina 1

E.F.P. Ingeniera de Sistemas


IS 141 (Algoritmos)

Laboratorio 11 y 12

mtodos: mismo nombre pero distinto n de argumentos o distinto tipo de


argumentos o distinto orden.

String replace (char viejoChar, char nuevoChar): cambia el carcter asociado al


primer argumento por el que se le pasa al segundo, de la String sobre la que se aplica el
mtodo generando una nueva. La String sobre la que

se aplica el mtodo no cambia, simplemente se crea otra nueva en base a la String sobre la
que se aplica el mtodo.
Ejemplo:

Por consola:
coma
cama

String toLowerCase(): devuelve una nueva String convirtiendo todos los caracteres de
la String sobre la que se aplica el mtodo, en minsculas.

String toUpperCase(): devuelve una nueva String convirtiendo todos los caracteres de
la String sobre la que se aplica el mtodo, en maysculas.

boolean equals(String str): investiga si dos String tienen los mismos caracteres y en el
mismo orden. Si es as devuelve true y si no false.

boolean equalsIgnoreCase(String str): investiga si dos String tienen los mismos


caracteres y en el mismo orden sin tener en cuenta las maysculas. Si es as devuelve
true y si no false.

boolean startsWith(String str): devuelve true si la String sobre la que se aplica


comienza por la del argumento; false si esto no ocurre.

boolean startsWith(String str, int indice): devuelve true si la String sobre la que se
aplica comienza por la del argumento a partir de un determinado ndice asociado al
segundo argumento; false si esto no ocurre.

boolean endsWith(String str): devuelve true si la String sobre la que se aplica acaba
en la del argumento; false si esto no ocurre.

Docente: Jennifer Pillaca De La cruz

Pgina 2

E.F.P. Ingeniera de Sistemas


IS 141 (Algoritmos)

Laboratorio 11 y 12

String trim(): devuelve una String en base a la que se le pasa al argumento, pero sin
espacios en blanco al principio ni al final. No elimina los espacios en blanco situados
entre las palabras.

String substring(int indiceIni, int indiceFin): devuelve una String obtenida a partir

del ndice inicial incluido y del ndice final excluido; es decir, se comporta como un
intervalo semiabierto [indiceIni, indiceFin). Si el ndice final sobrepasa la longitud de
la String, lanza una IndexOutOfBoundsException.
Ejemplo:

Docente: Jennifer Pillaca De La cruz

Pgina 3

E.F.P. Ingeniera de Sistemas


IS 141 (Algoritmos)

Laboratorio 11 y 12

char charAt (int indice): devuelve el carcter asociado al ndice que se le pasa como
argumento de la String sobre la que se aplica el mtodo. Si el ndice no existe se lanza
una StringIndexOutOfBoundsException que hereda de IndexOutOfBoundsException.

Operaciones con Cadenas


Las cadenas o String constituyen una de las clases ms frecuentemente utilizada en los
programas de Java. Por ser un objeto, las cadenas presentan una serie de propiedades y
comportamientos.
Declaracin:
String nombreCadena;
Creacin:
nombreCadena = <valor>;
o
nombreCadena = new String (<valor>);
o
nombreCadena = new String (otraCadena);

Docente: Jennifer Pillaca De La cruz

Pgina 4

E.F.P. Ingeniera de Sistemas


IS 141 (Algoritmos)

Laboratorio 11 y 12

Mtodos

1.

Probar el siguiente cdigo que realiza la lectura de una cadena.

public class Lectura_cadena {


public static void main(String[] args) {
String nom= "PepE";
System.out.println("La cadena es "+nom);
Scanner valor =new Scanner (System.in);
String cad1= new String();
Docente: Jennifer Pillaca De La cruz

Pgina 5

E.F.P. Ingeniera de Sistemas


IS 141 (Algoritmos)

Laboratorio 11 y 12

System.out.println("Ingrese la cadena");
cad1=valor.nextLine();
System.out.println("la cadena ingresada es "+cad1);
}}

2.

Probar el siguiente cdigo que calcula el tamao de una cadena ingresada.

public class Tamao {


public static void main(String[] args) {
String cad="";
Scanner valor = new Scanner(System.in);
System.out.println("ingrese la cadena");
cad=valor.nextLine();
System.out.println("Su cadena ingresada es "+cad);
int t;
t=cad.length();
System.out.println("el tamao de su cadena es ..."+t);
}
}
3.
Probar el siguiente cdigo que imprime un carcter segn la posicin
indicada.
public class Caracter {
public static void main(String[] args) {
String curso="Algoritmos";
char c=curso.charAt(5);
System.out.println(c);// imprime i
}
}
4.

Probar el siguiente cdigo que compara 2 cadenas.

public class Comparacion {


public static void main(String[] args) {
String str1="El lenguaje Java";
String str2=new String("El lenguaje Java");
System.out.println("La cadena 1 es.........."+str1);
System.out.println("La cadena 2 es.........."+str2);
if(str1==str2){
System.out.println("La cadena 1 y la cadena 2 son los mismos objetos");
}else{
System.out.println("La cadena 1 y la cadena 2 son distintos objetos");
}
if(str1.equals(str2)){
System.out.println("La cadena 1 y la cadena 2 tienen el mismo
contenido");
}else{
Docente: Jennifer Pillaca De La cruz

Pgina 6

E.F.P. Ingeniera de Sistemas


IS 141 (Algoritmos)

Laboratorio 11 y 12

System.out.println("La cadena 1 y la cadena 2 tienen distinto


contenido");
}
if(str1.startsWith("El"))
System.out.println("La cadena 1 tiene como prefijo .....El..");
else
System.out.println("La cadena 1 no tiene como prefijo .....El..");
String sufijo="Java";
if(str1.endsWith(sufijo))
System.out.println("La cadena 1 tiene como sufijo......"+sufijo);
else
System.out.println("La cadena 1 no tiene como prefijo....."+sufijo);

String str3="El curso de Algoritmos";


String str4=str1;
System.out.println("Son el mimso objeto "+(str3==str4));
System.out.println("Comparaccion por un metodo.......................");
if (Igualdad (str1,str3))
System.out.println("Las cadenas son iguales");
else
System.out.println("Las cadenas son diferentes");
}
public static boolean Igualdad(String s1, String s2) {
int k=0;
if (s1.length()==s2.length()){
for (int i=0; i<s1.length(); i++){
if (s1.charAt(i)!=s2.charAt(i))
k++;
}
}
else
k++;
if (k==0)
return true;
else
return false;
}
}

Docente: Jennifer Pillaca De La cruz

Pgina 7

E.F.P. Ingeniera de Sistemas


IS 141 (Algoritmos)
5.

Laboratorio 11 y 12

Probar el siguiente cdigo que imprime el ndice de la primera y ltima


aparicin de una subcadena.

public static void main(String[] args) {


String cadena1= "El dia amanecio soleado, este dia sera muy bueno";
String cadena2="dia";
System.out.println("La cadena es "+cadena1);
int i,j;
i=cadena1.indexOf(cadena2);
j=cadena1.lastIndexOf(cadena2);
System.out.println("la primera aparicion de la subcadena "+ cadena2+" empieza en la
posicin " +i);//imprime 3
System.out.println("la ultima aparicion de la subcadena "+ cadena2+" empieza en la
posicin "+ j);//imprime
}

6.

Probar el siguiente cdigo.

public class Remplazo {


public static void main(String[] args) {
String str1=" El lenguaje Java ";
String str2=new String("Java");
String str3=" Es el mejor";
String str4="";
System.out.println("Cadena 1 ........."+str1);
System.out.println("Cadena 2 ........."+str2);
System.out.println("Cadena 3 ........."+str3);
str4=str1.replace(str1, str2);
System.out.println("La cadena 1 reemplazada con cadena 2 es............" +str4);
str4=str1.toLowerCase();
System.out.println("La cadena 1 en minuscula es ........................"+str4);
str4=str2.toUpperCase();
System.out.println("La cadena 2 en MAYUSCULA............................"+str4);
str4=str1.trim();
System.out.println("La cadena 1 sin espacios al inicio y al final......."+str4);
str4=str1.concat(str3);
System.out.println("La cadena 1 concatenada con cadena 3................"+str4);
}
7.

Probar el siguiente cdigo que usa sub cadena.

public class Subcadena {


Docente: Jennifer Pillaca De La cruz

Pgina 8

E.F.P. Ingeniera de Sistemas


IS 141 (Algoritmos)

Laboratorio 11 y 12

public static void main(String[] args) {


String str="El lenguaje Java";
String subStr=str.substring(12);
System.out.println("La cadena es .............................................."+str);
System.out.println("La cadena extraida a partir de la posicion
12 ............."+subStr);
subStr=str.substring(3, 11);
System.out.println("la cadena extraida de la posicin 3 a la 11................"+subStr);
}}
8.

Probar el siguiente cdigo .

package Cadenas;
import javax.swing.JOptionPane;
public class Ejemplo {
public static void main( String args[] )
{
String s1 = new String( "hola" ); // s1 es una copia de "hola"
String s2 = "adis";
String s3 = "Feliz Cumpleaos";
String s4 = "feliz cumpleaos";
String salida = "s1 = " + s1 + "\ns2 = " + s2 + "\ns3 = " + s3 +
"\ns4 = " + s4 + "\n\n";
// probar igualdad
if ( s1.equals( "hola" ) ) // true
salida += "s1 es igual a \"hola\"\n";
else
salida += "s1 es distinta de \"hola\"\n";
// probar igualdad con ==
if ( s1 == "hola" ) // false; no son el mismo objeto
salida += "s1 es igual a \"hola\"\n";
else
salida += "s1 es distinta de \"hola\"\n";
// probar igualdad (ignorar maysculas)
if ( s3.equalsIgnoreCase( s4 ) ) // true
salida += "s3 es igual a s4\n";
else
salida += "s3 es distinta de s4\n";
// probar compareTo
salida += "\ns1.compareTo( s2 ) es " + s1.compareTo( s2 ) +
"\ns2.compareTo( s1 ) es " + s2.compareTo( s1 ) +
"\ns1.compareTo( s1 ) es " + s1.compareTo( s1 ) +
"\ns3.compareTo( s4 ) es " + s3.compareTo( s4 ) +
"\ns4.compareTo( s3 ) es " + s4.compareTo( s3 ) + "\n\n";
Docente: Jennifer Pillaca De La cruz

Pgina 9

E.F.P. Ingeniera de Sistemas


IS 141 (Algoritmos)

Laboratorio 11 y 12

// probar regionMatches (susceptible a maysculas)


if ( s3.regionMatches( 0, s4, 0, 5 ) )
salida += "Los primeros 5 caracteres de s3 y s4 concuerdan\n";
else
salida += "Los primeros 5 caracteres de s3 y s4 no concuerdan\n";
// probar regionMatches (ignorar maysculas)
if ( s3.regionMatches( true, 0, s4, 0, 5 ) )
salida += "Los primeros 5 caracteres de s3 y s4 concuerdan";
else
salida += "Los primeros 5 caracteres de s3 y s4 no concuerdan";
System.out.println("RESPUESTA...............");
System.out.println(salida);
JOptionPane.showMessageDialog(null, salida,"Manejo de Cadenas "
,JOptionPane.INFORMATION_MESSAGE);
}
} // fin de la clase CompararString
9.
Probar el siguiente cdigo que hace conversin de tipos.
public class Convertir {
public static void main(String[] args) {
String str=" 12 ";
int numero=Integer.parseInt(str.trim());
System.out.println("La cadena que contiene un numero es................."+str);
System.out.println("luego de la conversin el nmero es................."+numero);
String str2="12.35 ";
double num=Double.valueOf(str2).doubleValue();
System.out.println("La cadena que contiene un numero con decimal es....."+str2);
System.out.println("luego de la conversin el nmero con decimal ......."+num);
}
}
10.

Probar el siguiente cdigo .

public class InicioFin {


public static void main( String args[] )
{
String cadenas[] = { "empez", "empezando", "termin", "terminando" };
String salida = "";
// mtodo startsWith
for ( int cuenta = 0; cuenta < cadenas.length; cuenta++ )
if ( cadenas[ cuenta ].startsWith( "em" ) )
Docente: Jennifer Pillaca De La cruz

Pgina 10

E.F.P. Ingeniera de Sistemas


IS 141 (Algoritmos)

Laboratorio 11 y 12

salida += "\"" + cadenas[ cuenta ] + "\" empieza con \"em\"\n";


salida += "\n";
// mtodo startsWith, empezando desde la posicin
// posicin 2 de la cadena
for ( int cuenta = 0; cuenta < cadenas.length; cuenta++ )
if ( cadenas[ cuenta ].startsWith( "pez", 2 ) )
salida += "\"" + cadenas[ cuenta ] +
"\" empieza con \"pez\" a partir de la posicin 2\n";
salida += "\n";
// mtodo endsWith
for ( int cuenta = 0; cuenta < cadenas.length; cuenta++ )
if ( cadenas[ cuenta ].endsWith( "do" ) )
salida += "\"" + cadenas[ cuenta ] + "\" termina con \"do\"\n";
JOptionPane.showMessageDialog( null, salida,
"Comparaciones
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}}
11. Probar el siguiente cdigo .

con

la

clase

String",

public class Varios {


public static void main( String args[] )
{
String s1 = "hola a todos";
char arregloChar[] = new char[ 4 ];
String salida = "s1: " + s1;
// probar mtodo length
salida += "\nLongitud de s1: " + s1.length();
// iterar a travs de los caracteres en s1 y mostrar al revs
salida += "\nLa cadena invertida es: ";
for ( int cuenta = s1.length() - 1; cuenta >= 0; cuenta-- )
salida += s1.charAt( cuenta ) + " ";
// copiar caracteres de la cadena a arregloChar
s1.getChars( 0, 4, arregloChar, 0 );
salida += "\nEl arreglo de caracteres es: ";
for ( int cuenta = 0; cuenta < arregloChar.length; cuenta++ )
salida += arregloChar[ cuenta ];

Docente: Jennifer Pillaca De La cruz

Pgina 11

E.F.P. Ingeniera de Sistemas


IS 141 (Algoritmos)

Laboratorio 11 y 12

JOptionPane.showMessageDialog( null, salida,


"Mtodos de String para manipular caracteres",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
}

12.

Probar el siguiente cdigo de constructores.

public class constructoresCadenas {


public static void main( String args[] )
{
char arregloChar[] = { 'c', 'u', 'm', 'p', 'l', 'e', ' ', 'a', '', 'o', 's' };
byte arregloByte[] = { ( byte ) 'a', ( byte ) '',
( byte ) 'o', ( byte ) ' ', ( byte ) 'n',
( byte ) 'u', ( byte ) 'e', ( byte ) 'v', (byte) 'o' };
String s = new String( "hola" );
// usar constructores de String
String s1 = new String();
String s2 = new String( s );
String s3 = new String( arregloChar );
String s4 = new String( arregloChar, 7, 4 );
String s5 = new String( arregloByte, 4, 5 );
String s6 = new String( arregloByte );
// anexar objetos String a salida
String salida = "s1 = " + s1 + "\ns2 = " + s2 + "\ns3 = " + s3 +
"\ns4 = " + s4 + "\ns5 = " + s5 + "\ns6 = " + s6;
JOptionPane.showMessageDialog( null, salida,
"Constructores de la clase String", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
}
Ejercicios
1.
Suponer que Java no incorpora mtodos para las cadenas. Construya sus
propios mtodos para la solucin de los ejercicios anteriores.

Docente: Jennifer Pillaca De La cruz

Pgina 12

E.F.P. Ingeniera de Sistemas


IS 141 (Algoritmos)

Laboratorio 11 y 12

2.

Implementar en cdigo Java el mtodo palndromo que verifica si una cadena


al leer de derecha a izquierda es igual que leer de izquierda a derecha.
Tambin averiguar que mtodo lo implementa en Java.
3.
Implementar en cdigo Java un programa que escriba una cadena n veces.
Debe existir un mtodo que como parmetro se enve la cadena y el nmero
de repeticiones.
4.
Realizar un programa que permita ingresar una frase y se visualice en
maysculas y minsculas.
5.
Realizar un programa que permita ingresar una frase en minscula, visualice
la frase con las primeras letras de cada palabra en mayscula
6.
Realizar un programa que permita concatenar 2 cadenas. Al inicio de la
concatenacin incluir el smbolo &.
Ojo: No se permite el uso de mtodos definidos por Java
Conversin de tipos
Tipo

A String

De String

Boolean

String.valueOf(boolean)

new Boolean(String).booleanValue()

Int

String.valueOf(int)

Integer.ParseInt(String, int base)

Long

String.valueOf(long)

Long.ParseLong(String, int base)

Flota

String.valueOf(float)

new Float(String).floatValue()

Double

String.valueOf(double)

new Double(String).doubleValue()

Docente: Jennifer Pillaca De La cruz

Pgina 13

Vous aimerez peut-être aussi