miércoles, 28 de marzo de 2012

Cadena de Caracteres

Buenas amigos, como hemos estado viendo, para manejar números en java hemos utilizado variables de tipo int(enteros) y float(reales). Ahora veremos como manejar cadenas de caracteres(por ejemplo nombre del alumno) y almacenarlos en variables de tipo STRING
Pongamos un ejemplo:

"Realizar una aplicación que pida por medio de 2 mensajes, introducir por un lado el nombre de la persona, y por otro los dos apellidos."


Creamos un nuevo proyecto y una nueva clase e importamos la clase Scanner dela librería java.util
          • import java.util.Scanner;
Creamos un objeto de la clase Scanner llamado teclado:
          • Scanner teclado=new Scanner(System.in);
Creamos 2 variables de tipo STRING, una llamada nombre y otra apellidos:
          • String nombre;
          • String apellidos;
Pedimos por teclado que se ingrese un nombre:
          • System.out.print("Introduzca su nombre: ");
Leemos por teclado el nombre introducido por consola:
          • nombre=teclado.next();
Bien, el método next() (En el siguiente tema veremos lo que es un método) lee una cadena de caracteres hasta que encuentra un espacio, con lo cual, sólo leerá una palabra, si intentáis escribir un nombre compuesto, os dará error. Sigamos.

Pedimos por teclado que se ingresen los apellidos:
          • System.out.println("Introduzca los apellidos: ");
Leemos por teclado los apellidos introducidos:
          • teclado.nextLine();
          • apellidos=teclado.nextLine();
Bien, ahora nos encontramos con que debemos introducir ambos apellidos, con lo cual, tendremos que leer un espacio entre ambos, para solucionar eso, existe el método nextLine(); el cual nos permite leer una cadena de caracteres por muchos espacios que haya por medio, pero si os fijáis, he escrito 2 veces teclado.nextLine(); el primero que se escribe es para que devuelva el valor de INTRO y no nos de un error al ejecutar, y el segundo es para almacenar la cadena de los apellidos en la variable apellidos.

Posteriormente y para finalizar, mostramos por pantalla el nombre y los apellidos:
          • System.out.print("Su nombre es: "+nombre);
          • System.out.print("Sus apellidos son: "+apellidos);
Con el símbolo "+" podemos concatenar o unir dos cadenas, en nuestro caso, una está escrita y la otra está almacenada en una variable, aún así ambas son cadenas de caracteres, e incluso podríamos ahorrarnos un System.out.print();

          • System.out.print("Su nombre es "+nombre+" y sus apellidos son: "+apellidos);
Solo tendríamos que ir concatenando las cadenas con el símbolo "+".


Una cosa más que no he dicho, y que va a resultar importante. Anteriormente para comparar dos tipos de valores numéricos utilizábamos el doble igual "= =", ahora para comparar 2 cadenas para saber si son iguales, se utiliza el método equals();

Pongamos un ejemplo:


Creamos una nueva clase e importamos el la clase Scanner de la librería java.util:
          • import java.util.Scanner:
Creamos un objeto de la clase Scanner llamado teclado:
          • Scanner teclado=new Scanner(System.in);
Creamos 2 variables de tipo STRING llamadas cadena1 y cadena2:
          • String cadena1;
          • String cadena2;
Pedimos por teclado una cadena de texto:
          • System.out.print("Introduzca una cadena: ");
Y la leemos por teclado:
          • cadena1=teclado.nextLine();
Pedimos por teclado la segunda cadena:
          • System.out.print("Introduzca otra cadena: ");
Y la leemos por teclado:
          • cadena2=teclado.nextLine();
Ahora con una Sentencia condicional, nos limitamos a compararlas y mostrar por consola si son iguales o no:
          • if(cadena1.equals(cadena2)){

          • System.out.print("Ambas cadenas son iguales");

          • }else{

          • System.out.print("Ambas cadenas son distintas");

          • }
Como veis, en vez de usar el doble igual "= =", utilizamos el método .equals(), donde metemos entre paréntesis la cadena a comparar con la cadena1, en nuestro caso sería la cadena2.

Este método, distingue entre mayúsculas y minúsculas, con lo cual si escribimos "Hola mundo" y "Hola Mundo", dirá que son distintas, ya que mundo empieza por minúscula en una y por mayúscula en otra. Para solucionar esto, existe el método .equalsIgnoreCase(); el cual, hace lo mismo que .equals(); pero sin distinguir mayúsculas de minúsculas.

Espero haberos servido de ayuda. Un saludo.

No hay comentarios:

Publicar un comentario