Comparar cadenas es algo que se hace frecuentemente, en un programa que utilice esto es esencial, por ejemplo, si creamos una base de datos y realizamos una busqueda en el registro, debemos hacer una comparación de lo que le decimos que busque y lo que hay en la base de datos para obtener un resultado.
La forma de lograr que Java compare caracteres es la siguiente:
cadena1.compareTo(cadena2)
En donde:
- cadena1: sera una variable del tipo "String".
- cadena2: sera la cadena a comparar y sera otra variable del tipo "String"
- compareTo: es el código que se emplea para realizar la comparación.
Si lo interpretamos y traducimos dira comparar la "cadena1" con la "cadena2".
Sin embargo, este método es muy poco eficiente, ya que distingue mayúsculas de minúsculas. Es decir, que si realizamos una busqueda y comparamos, el programa distinguira las mayúsculas de las minúsculas y no mostrara un resultado a menos que escribamos exactamente el nombre del archivo que estamos buscando.
Para solucionar esto, existe otra forma de comparar cadenas, esto se hace con una pequeña variación en la línea de código del ejemplo anterior.
cadena1.equalsIgnoreCase(cadena2)
Con esto le indicamos al programa que ignore o no distinga entre mayúsculas y minúsculas, para realizar una comparación eficiente.
Por ejemplo, en el "compareTo" escribir "Casa" es distinto de "casa", porque una cadena comienza en mayúscula y la otra no, pero con "equalsIgnoreCase" escribir "Casa" es lo mismo que escribir "casa", sin importar las letras mayúsculas.
La forma de utilizar esto es la siguiente:
- Creamos dos variables del tipo "String" que almacenaran los valores que vamos a comparar, para no complicarnos podemos llamarlas "cadena1" y "cadena2".
String cadena1, cadena2;
- Utilizamos el método de comparación que queramos, aunque recomiendo utilizar el "equalsIgnoreCase".
- Creamos una variable del tipo "boolean" (verdadero o falso).
boolean comparar;
- Aplicamos a la variable del tipo "boolean" el método de comparación que deseamos utilizar.
comparar = cadena1.equalsIgnoreCase(cadena2);
- Creamos una condición, si la variable devuelve "true"(verdadero), las cadenas son iguales, de lo contrario las cadenas son diferentes.
if (comparar) //Iguales
else //diferentes
De cualquier forma, esto se aprecia mejor en práctica, aquí ejemplo utilizando el "equalsIgnoreCase".
import java.io.*; import javax.swing.*; class Comparar { public static void main (String [] args) throws IOException { try { String cadena1,cadena2; JOptionPane.showMessageDialog(null, "Comparar Cadenas", "Created By CarlitoX", JOptionPane.INFORMATION_MESSAGE); cadena1= JOptionPane.showInputDialog(null, "Ingrese el primer valor o frase", "Primera entrada", JOptionPane.PLAIN_MESSAGE); cadena2= JOptionPane.showInputDialog(null, "Ingrese el segundo valor o frase", "Segunda entrada", JOptionPane.PLAIN_MESSAGE); boolean comparar; comparar = cadena1.equalsIgnoreCase(cadena2); if (comparar) JOptionPane.showMessageDialog(null, "Son iguales", "Resultado", JOptionPane.INFORMATION_MESSAGE); else JOptionPane.showMessageDialog(null, "Son diferentes", "Resultado", JOptionPane.INFORMATION_MESSAGE); } catch (Exception exp) { System.out.println(exp.getMessage()); } } }
En este ejepmlo, si nos fijamos bien, he colocado en la parte de la excepción ".getMessage()", esto es para capturar el error en caso de una excepción y mostrarla por pantalla en forma de mensaje, de esta forma sera más fácil de entender la excepción en caso que se produzca.
Recibe notificaciones por correo
2 Comentarios
Escribir Comentariocomo puedo comparar lo que ingrese con un arreglo si el arreglo con tiene todo el abecedario
ResponderNo entiendo la pregunta... la reformulas?
ResponderLamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.
Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión