Cadenas de Caracteres en Java PDF

Title Cadenas de Caracteres en Java
Author francisco lara natoli
Course Programación 1
Institution Universidad de Málaga
Pages 14
File Size 897.1 KB
File Type PDF
Total Downloads 93
Total Views 146

Summary

Download Cadenas de Caracteres en Java PDF


Description

Cadenas de caracteres en Java En Java cuando queremos almacenar un valor entero definimos una variable de tipo entero (byte, short, int, long); si queremos almacenar un valor con decimales definimos una variable de tipo real (float, double). Pero si queremos almacenar una cadena de caracteres (por ejemplo, el nombre de una persona) debemos definir un objeto de la clase String. Los Strings son cadenas de caracteres que pueden incluir caracteres alfabéticos, numéricos, signos de puntuación, símbolos matemáticos y cualquier otro carácter que podemos escribir en el ordenador Problema 1: Solicitar el nombre y edad (distinta) de dos personas. Mostrar el nombre de la persona con mayor edad.

import java.util.Scanner; public class CadenasCaracteres { public static void main(String[] args) { Scanner teclado = new Scanner(System.in); String nombre1, nombre2; int edad1, edad2; System.out.print("Introduce nombre de la primera persona "); nombre1 = teclado.next(); System.out.print("Introduce edad de la primera persona "); edad1 = teclado.nextInt(); System.out.print("Introduce nombre de la segunda persona "); nombre2 = teclado.next(); System.out.print("Introduce edad de la segunda persona "); edad2 = teclado.nextInt(); if (edad1 ==edad2) System.out.println(nombre1+" y "+nombre2+" Tienen la misma edad"); else if(edad1 > edad2) System.out.println("La persona de mayor edad es " + nombre1); else System.out.println("La persona de mayor edad es " + nombre2); } } Para almacenar un nombre debemos definir una variable de tipo String y su ingreso por teclado se hace llamando al método next() del objeto teclado: nombre1=teclado.next(); La primera salvedad que tenemos que hacer cuando utilizamos el método next() es que solo nos permite ingresar una cadena de caracteres con la excepción del espacio en blanco (es decir debemos ingresar un nombre de persona y no su nombre y apellido separado por un espacio en blanco).

Existe otro método llamado nextLine() que nos permite leer cadenas de caracteres con espacios en blanco pero su uso se complica cuando leemos otras variables de tipo distinto a String (por ejemplo int, float etc.) Lo comprobamos modificando el programa anterior de manera que nos permita leer el nombre y apellidos de cada persona, utilizando el método nextLine() import java.util.Scanner; public class CadenasCaracteres { public static void main(String[] args) { Scanner teclado = new Scanner(System.in); String nombre1, nombre2; int edad1, edad2; System.out.print("Introduce nombre de la primera persona "); nombre1 = teclado.nextLine(); System.out.print("Introduce edad de la primera persona "); edad1 = teclado.nextInt(); System.out.print("Introduce nombre de la segunda persona "); nombre2 = teclado.nextLine(); System.out.print("Introduce edad de la segunda persona "); edad2 = teclado.nextInt(); if (edad1 ==edad2) System.out.println(nombre1+" y "+nombre2+" Tienen la misma edad"); else if(edad1 > edad2) System.out.println("La persona de mayor edad es " + nombre1); else System.out.println("La persona de mayor edad es " + nombre2); } } Vemos que no nos permite introducir el nombre de la segunda persona. Esto es debido a que previamente hemos leído un número de tipo int mediante el método nextInt() y después hemos pulsado la tecla Enter. A continuación utilizamos el método nextLine() para leer una cadena de caracteres (el nombre de la segunda persona), pero el valor de la tecla Enter será el que se almacene en la variable de tipo String que pretendemos leer (nombre2) y seguirá el flujo del programa. Para solucionar este problema debemos insertar la siguiente instrucción teclado.nextLine(); antes de leer la siguiente cadena de caracteres, como se muestra en el siguiente segmento de código: System.out.print("Introduce edad de la primera persona "); edad1 = teclado.nextInt(); teclado.nextLine(); System.out.print("Introduce nombre de la segunda persona "); nombre2 = teclado.nextLine(); Vemos, después de leer la variable numérica edad1, utilizamos el método nextLine() dos veces, la primera vez retorna el valor de la tecla "Enter" que no almacenamos en ninguna variable y la segunda vez para leer la variable de tipo

String nombre2, que queda esperando que introduzcamos por teclado el nombre y apellido de la segunda persona. Debemos tener en cuenta que esto es necesario sólo si previamente hemos leído una variable que no es de tipo String. Los métodos que se pueden aplicar a las cadenas son:

Podemos ver ahora algunos ejemplos: Para saber si una cadena tiene datos o está vacía podemos emplear el método isEmpty() que devolverá true o false si está o no está vacía. Supongamos que deseamos hacer un programa que pide el nombre al usuario y no terminará hasta que lo teclee.(En el próximo tema veremos los bucles)

Podemos ver que cada vez que pulsamos Enter sin teclear nada vuelve a ejecutarse el bucle porque la cadena está vacía.

Length Permite devolver la longitud de una cadena (el número de caracteres de la cadena): String texto1=”Prueba”; System.out.println(texto1.length());//Escribe 6 concatenar cadenas Se puede hacer de dos formas, utilizando el método concat o con el operador +. Ejemplo: String s1=”Buenos ”, s2=”días”, s3, s4; s3 = s1 + s2; s4 = s1.concat(s2); charAt En otras ocasiones (numerosas ocasiones) necesitaremos trabajar con los carateres de un String. Para poder acceder al caracter de un String que está en una determinada posición Java nos suministra el método charAt( ) que tendrá como argumento o parámetro la posición del caracter que deseamos obtener. •



letra = cadena.charAt(int donde); /* devuelve el carácter de la cadena que está en la posición donde. Hay que tener en cuenta que lo que devuelve es un caracter luego letra deberá ser de tipo char */ letracode = cadena.codePointAt(int donde); /* devuelve el código del carácter que está en la posición donde. */ Ejemplo: String s1=”Prueba”; char c1=s1.charAt(2); //c1 valdrá ‘u’ Cuidado, si en alguna de las funciones indicamos una posición que sea mayor que el número de caracteres de la cadena Java mostrará un error indicando que hemos excedido los límites del String [out of range], una excepción tipo IndexOutOfBoundsException.

contains el método contains() busca una cadena dentro de otra . Este método devuelve True si se encuentre la cadena y False en caso contrario. String frase=” La mesa es verde”, buscar=”mesa” if (frase.contains(buscar))….

substring Da como resultado una porción del texto de la cadena. La porción se toma desde una posición inicial hasta una posición final (sin incluir esa posición final). Si las posiciones indicadas no son válidas ocurre una excepción de tipo IndexOutOfBounds-Exception. Se empieza a contar desde la posición 0. •



otracadena = cadena.substring(int inicio); /* extrae de la cadena una subcadena desde el carácter en la posición inicio (hay que tener en cuenta que el primer carácter está en la posición 0) hasta el final de la cadena*/ otracadena = cadena.substring(int inicio, int fin); /* extrae de la cadena una subcadena desde el carácter en la posición inicio (el primer carácter está en la posición 0) hasta el carácter de la posición anterior a fin (el de la posición fin no está incluido) */ Ejemplo: String s1=”Buenos días”; String s2=s1.substring(7,10); //s2 = día String str="El lenguaje Java"; String subStr=str.substring(3, 11);

Se obtendrá el substring "lenguaje". Recuérdese, que las posiciones se empiezan a contar desde cero. Métodos que nos permiten conocer la posición donde se encuentra un carácter dentro de la cadena u otra cadena dentro de ella. •

lugar = cadena.indexOf(String cad); /* indica la primera posición (valor entero) donde se encuentra la cadena cad dentro de cadena. Si no la encuentra devuelve 1 */



lugar = cadena.indexOf(int caracter); /* indica la primera posición (valor entero) donde se encuentra el caracter dentro de la cadena. Si no lo encuentra devuelve -1 */ Devuelve la primera posición en la que aparece un determinado texto en la cadena. En el caso de que la cadena buscada no se encuentre, devuelve -1. El texto por buscar puede ser char o String. Ejemplo: String s1=”Quería decirte que quiero que te vayas”; System.out.println(s1.indexOf(“que”)); //Da 15 Se puede buscar desde una determinada posición. En el ejemplo anterior: System.out.println(s1.indexOf(“que”,16)); //Ahora da 26 ya que sigue contando desde la posición del primer que hasta el segundo





lugar = cadena.lastIndexOf(String cad); /* indica la última posición (valor entero) donde se encuentra la cadena cad dentro de la cadena. Si no la encuentra devuelve -1 */ lugar = cadena.lastIndexOf(int caracter); /* indica la última posición (valor entero) donde se encuentra el caracter dentro de la cadena. Si no lo encuentra devuelve -1 */



lugar = cadena.indexOf(String cad, int desde); /* indica la primera posición donde se encuentra la cadena cad dentro de cadena a partir del carácter que está en la posición desde. Si no lo encuentra devuelve -1 */

• lugar = cadena.indexOf(int carácter, int desde); /* indica la primera posición

donde se encuentra el caracter dentro de la cadena a partir de la posición desde. Si no lo encuentra devuelve -1 */ • lugar = cadena.lastIndexOf(String cad, int desde); /* indica la última

posición donde se encuentra la cadena cad dentro de cadena a partir del carácter desde. Si no lo encuentra devuelve -1 */ • lugar = cadena.lastIndexOf(int carácter, int desde); /* indica la última

posición donde se encuentra el caracter dentro de la cadena a partir de la posición desde. Si no lo encuentra devuelve -1 */ • verdaderofalso = cadena.startsWith(String comienzo); /* que devolverá un

valor booleano, true si la cadena empieza por el contenido del parámetro comienzo o false en caso contrario*/ • verdaderofalso = cadena.endsWith(String final); /* que devolverá un valor

booleano, true si la cadena termina por el contenido del parámetro comienzo o false en caso contrario*/ Java también nos suministra métodos para reemplazar dentro de una cadena una subcadena por otra. Los métodos para realizar esta tarea son: •

cadena = cadena.replaceFirst(String antigua, String nueva); /* reemplaza en cadena la primera ocurrencia del texto antigua por el texto nueva. Cuidado, distingue entre mayúsculas y minúsculas */



cadena = cadena.replaceAll(String antigua, String nueva); /* reemplaza en cadena todas las ocurrencias del texto antigua por el texto nueva. Cuidado, distingue entre mayúsculas y minúsculas */ replace Cambia todas las apariciones de un carácter por otro en el texto que se indique y lo almacena como resultado. El texto original no se cambia, por lo que hay que asignar el resultado de replace a un String para almacenar el texto cambiado: String s1=”Mariposa”; System.out.println(s1.replace(‘a’,’e’));//Da Meripose System.out.println(s1);// Sigue conteniendo Mariposa replaceAll Modifica en un texto cada entrada de una cadena por otra y devuelve el resultado. El primer parámetro es el texto que se busca (que puede ser una expresión regular), el segundo parámetro es el texto con el que se reemplaza el buscado. La cadena original no se modifica. String s1=”Cazar armadillos”; System.out.println(s1.replace(“ar”,”er”));//Da Cazer ermedillos System.out.println(s1);//Sigue conteniendo Cazar armadilos

toUpperCase Devuelve la versión en mayúsculas de la cadena. String texto =”Es una cadena de caracteres”; System.out.println(“En mayúsculas” +texto.toUpperCase()); toLowerCase Devuelve la versión en minúsculas de la cadena. trim El método trim( ) es posiblemente uno de los más útiles y menos valorados cuando se comienza a programar. Este método los que hace es eliminar los espacios en blanco que hay delante y detrás de una cadena de caracteres. Si nuestros programas son del tipo pedir el nombre y mostrarlo en pantalla, como los espacios en blanco no se ven, seguramente no apreciamos su utilidad. Sin embargo, nosotros aspiramos a realizar programas mucho más complejos, que interactúen con bases de datos y demás. Pues bien, el usuario es torpe por naturaleza, y es muy fácil que al escribir deje algún espacio delante o detrás del nombre (por ejemplo), ¿qué ocurre si se guarda con un espacio delante o detrás y después voy a consultar la información por el nombre normal (sin esos espacios de más)? evidentemente no se localizará la información (Además localizar esos errores es complicado y hacérselos entender al usuario casi imposible porque como los espacios en blanco no se ven, te mirará con cara rara...). Por eso, antes de guardar es buena costumbre eliminar esos espacios innecesarios delante y detrás de la cadena, y para eso disponemos de este método trim( ). Por ejemplo: vamos a pedir una cadena con espacios delante y detrás, y para ver su contenido real la vamos a delimitar al mostrarla en pantalla con dos asteriscos y mostraremos su longitud (que ya sabemos ¿verdad?). Después eliminaremos los espacios en blanco y volveremos a mostrar la misma información para ver la diferencia.

Resultado de la ejecución

Comparación entre objetos String Vamos a ver dos métodos que son los que más vamos a utilizar, posiblemente los más importantes (desde mi punto de vista) y algo (no mucho) más difíciles de entender. Se trata de dos métodos que nos permiten comparar cadenas. Como hemos visto hasta ahora, para comparar dos números empleábamos los operadores de relación (>, >=,...


Similar Free PDFs