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

Título: Empezando java desde 0, ejercicio (CU00657B).
Publicado 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?
Código: [Seleccionar]
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.
Título: Re:Empezando java desde 0, ejercicio (CU00657B).
Publicado por: toni_apr en 28 de Enero 2015, 22:49
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