Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: axorz en 28 de Enero 2015, 20:19
-
Hola, alguien me puede explicar por qué nunca entra en el if de si la palabra empieza por a?
import java.util.Scanner;
public class Test1 {
public static void main(String[]args) {
Scanner input = new Scanner(System.in);
String s = input.nextLine();
int longitud = s.length();
System.out.print("La cadena introducida tiene ");
if (longitud < 5) System.out.print("menos de 5 caracteres ");
else if (longitud >= 5 && longitud <= 15) System.out.print("entre 5 y 15 caracteres ");
else System.out.print("mas de 15 caracteres ");
String c = s.substring(0,1);
if (c == "a") System.out.print("y comienza por a\n");
else System.out.print("y no comienza por a\n");
}
}
Gracias y un saludo.
-
Hola axorz
En Java las comparaciones en objetos de tipo String se hacen con un método que implementa dicha clase String.
Es el método equals("cadena")
Tu línea:
if (c == "a") System.out.print("y comienza por a\n");
pasaría a ser:
if (c.equals("a")) System.out.print("y comienza por a\n");
Esto se debe a que un String no es un tipo primitivo como puede ser un int o un float que si aceptan == para hacer comparaciones, sino que es un objeto de tipo String compuesto de varios caracteres. Y para ello existe el método equals
En tu código para que la salida por pantalla sea más inteligible deberías añadir una línea antes de la de Scanner input = ... Algo como esto:
System.out.print("Introducir una cadena: ");
Sino el programa está esperando una respuesta sin haber hecho la pregunta.
Saludos