Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: mauriaguerrido en 09 de Abril 2015, 08:25
-
Buenas!
Consulta: Por qué en la segunda sentencia If cuando se compara la variable caracterA == "A" || caracterA == "a", por más que sea verdadero, da falso y pasa a Else?.
Clase TestMain
import java.util.Scanner;
public class TestMain {
public static void main (String [ ] args) {
System.out.println ("Introduzca un texto:");
String cadena = "";
String caracterA = "";
Scanner sc = new Scanner (System.in);
cadena = sc.nextLine ();
caracterA = cadena.substring (0,1);
if (cadena.length () < 5) {
System.out.println ("El texto escrito tiene menos de 5 caracteres.");
}else if (cadena.length () >= 5 && cadena.length () <= 15) {
System.out.println ("El texto escrito tiene entre 5 y 15 caracteres.");
}else {
System.out.println ("El texto tiene más de 15 caracteres.");
}
if (caracterA == "A" || caracterA == "a") {
System.out.println ("El texto comienza con el caracter: " + caracterA);
}else {
System.out.println ("El texto no comienza con el caracter A.");
}
System.out.println ("Verifico que el caracter guardado en la variable es \"A\" o \"a\": " + caracterA);
}
}
De todas formas, buscando en el foro di con la respuesta. No era la idea pero luego de ver que no encontraba la forma de solucionarlo decidí ver resultados de otros usuarios.
Aquí esta bien hecho (de todos modos no se porque de la forma anterior no se resuelve):
TestMain2
import java.util.Scanner;
public class TestMain2 {
public static void main (String [ ] args) {
System.out.println ("Introduzca un texto:");
String cadena = "";
String caracterA = "";
Scanner sc = new Scanner (System.in);
cadena = sc.nextLine ();
caracterA = cadena.substring (0,1);
if (cadena.length () < 5) {
System.out.print ("El texto escrito tiene menos de 5 caracteres");
}else if (cadena.length () >= 5 && cadena.length () <= 15) {
System.out.print ("El texto escrito tiene entre 5 y 15 caracteres");
}else {
System.out.print ("El texto tiene más de 15 caracteres.");
}
if (cadena.substring (0,1).equalsIgnoreCase ("a")) {
System.out.println (" y comienza con el caracter " + caracterA + ".");
}else {
System.out.println (" y no comienza con el caracter A/a.");
}
}
}
Saludos!
-
Hola mauria!!!
Por qué en la segunda sentencia If cuando se compara la variable caracterA == "A" || caracterA == "a", por más que sea verdadero, da falso y pasa a Else?
El caso que te sucede ahí, es que estas usando un "String". . String es un objeto, y tu no puedes usar "==" con objetos. El "==" solo se utiliza con los tipos primitivos (char, int, double... etc).
En ese pedazo usa un equals:
caracterA.equals("A") || caracterA.equals("a")
Con esto es que puedes comparar objetos. O bien, ya que viste el "equalsIgnoreCase" lo puedes usar tambien aqui para ahorrarte espacio en ese if.
caracterA.equalsIgnoreCase("A")
Ignore Case, lo que hace es que acepta todo sin importar que sea mayúscula o minúscula.
Espero que te haya ayudado mi humilde comentario :)
-
Hola Dan_SB.
Comprendido! Gracias por la ayuda ;D.