Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Hquinn en 09 de Enero 2016, 15:10

Título: Pedir datos por consola (teclado) en Java. Backslash, print, \n compara CU00657B
Publicado por: Hquinn en 09 de Enero 2016, 15:10
A ver que tal este ejercicio, que había varias maneras de hacerlo y he optado por lo corto xD

Código: [Seleccionar]
import java.util.Scanner; //Importación de la clase Scanner

public class Complicaciones{

    public static void main(String[]args){
        System.out.print("Introduce el animal en el que te quieres convertir:");
        String entradaTeclado = "";
        Scanner entradaEscaner = new Scanner(System.in); //Creación de un objeto Scanner
        entradaTeclado = entradaEscaner.nextLine();
        System.out.println("El animal que has escogido es: " + entradaTeclado + ".");
        int longitudEntrada = entradaTeclado.length();
        String primeraLetra = entradaTeclado.substring(0,1);
        if (longitudEntrada <5){
            System.out.print("La cadena introducida tiene menos de 5 caracteres ");
        }
        if (longitudEntrada >=5 && longitudEntrada<=15){
            System.out.print("La cadena introducida tiene entre 5 y 15 caracteres ");
        }
        else{
            System.out.print("La cadena introducida tiene más de 15 caracteres ");
        }
        if (primeraLetra == "a" && primeraLetra =="A"){
            System.out.println("y comienza por la letra A.");
        }
        else{
            System.out.println("y no comienza por la letra A.");
        }

    }
     
}
Título: Re:CU00657B - Pedir datos por consola (teclado) en Java. Backslash, print, \n
Publicado por: Enzo en 09 de Enero 2016, 16:18
Hola Hquinn,

¿Has probado el código?. Pruebalo poniendo por ejemplo "Gato" y veras que te da un error:
Citar
Introduce el animal en el que te quieres convertir:Gato
El animal que has escogido es: Gato.
La cadena introducida tiene menos de 5 caracteres La cadena introducida tiene más de 15 caracteres y no comienza por la letra A.

El problema lo tienes en los if que comprueban la longitud del texto. Tienes una primera comprobación para si es menor de 5 caracteres y después, tienes una segunda comprobación para si esta entre 5 y 15 o, si no se cumple esta, da por hecho que es mayor de 15.
Debes de hacerlo todo en una sola comprobación a base de if ... esle if ... else.

Y si me permites un consejo, dale a las clases nombres que sean indicativos de lo que hacen. Te resultara mucho mas fácil trabajar con ellas posteriormente.

Espero que te sirvan de ayuda mis comentarios,

Un Saludo,
Título: Re:CU00657B - Pedir datos por consola (teclado) en Java. Backslash, print, \n
Publicado por: Hquinn en 09 de Enero 2016, 16:52
Gracias por la corrección!

Ya está cambiado :)

Código: [Seleccionar]
import java.util.Scanner; //Importación de la clase Scanner

public class LongitudMasA{

    public static void main(String[]args){
        System.out.print("Introduce el animal en el que te quieres convertir:");
        String entradaTeclado = "";
        Scanner entradaEscaner = new Scanner(System.in); //Creación de un objeto Scanner
        entradaTeclado = entradaEscaner.nextLine();
        System.out.println("El animal que has escogido es: " + entradaTeclado + ".");
        int longitudEntrada = entradaTeclado.length();
        String primeraLetra = entradaTeclado.substring(0,1);
        if (longitudEntrada <5){
            System.out.print("La cadena introducida tiene menos de 5 caracteres ");
        }
        else if (longitudEntrada >=5 && longitudEntrada<=15){
            System.out.print("La cadena introducida tiene entre 5 y 15 caracteres ");
        }
        else{
            System.out.print("La cadena introducida tiene más de 15 caracteres ");
        }
        if (primeraLetra == "a" && primeraLetra =="A"){
            System.out.println("y comienza por la letra A.");
        }
        else{
            System.out.println("y no comienza por la letra A.");
        }

    }
     
}
Título: Re:CU00657B - Pedir datos por consola (teclado) en Java. Backslash, print, \n
Publicado por: Enzo en 10 de Enero 2016, 16:38
Hola Hquinn,

OK. Corregido el tema de la comparación de la longitud de la palabra.

Pero si lo pruebas veras que tiene otro error. Si pones un animal que comienza con "A" te dirá que no comienza por "A". Esto es por dos motivos:
1º La comparación la haces preguntando si se cumplen las dos condiciones (&&) en ver de si se cumple una o (||) otra condición.
2º En java para comparar una cadena no se usa ==.
Uno de los métodos mas fáciles es usar equals:
Código: [Seleccionar]
if (primeraLetra.equals("a") || primeraLetra.equals("A")){
            System.out.println("y comienza por la letra A.");
        }
        else{
            System.out.println("y no comienza por la letra A.");
        }
Pruebalo y veras como funciona.

Un Saludo,