Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: resakoso en 18 de Noviembre 2014, 09:15

Título: Ejercicio entrega CU00657B Métodos length y substring de la clase String. Java
Publicado por: resakoso en 18 de Noviembre 2014, 09:15
He estado intentando comparar los String con los operadores de comparación, y no ha habido forma. Al final buscando descubrí que esto se hace con equals...
Si hay algo que sería mejor hacerlo de otra forma, agradezco los comentarios  :D.

EJERCICIO

Crea una clase con un método main que pida una entrada de teclado y usando condicionales, el método length de la clase String y el método substring de la clase String, muestre un mensaje indicando:

a) Si la cadena introducida tiene menos de 5 caracteres, entre 5 y 15 caracteres o más de 15 caracteres.

b) Si la cadena introducida comienza por la letra a.

Ejemplo: se pide la entrada y el usuario introduce “vereda”. Por pantalla se debe mostrar: “La cadena introducida tiene entre 5 y 15 caracteres y no comienza por a”.

Código: [Seleccionar]
import java.util.Scanner;

public class Entradateclado {
   
    public Entradateclado(){
        //nada
    }   
   
   
    public static void main(String[] args) {
        String texto;
        String res;
        Scanner entrada=new Scanner(System.in);
        System.out.print("Introduce texto: ");
        texto=entrada.nextLine();
        if(texto.length()<5){
            res="La cadena introducida tiene menos de 5 caracteres";
           
        }else
            if((texto.length()>=5)&&(texto.length()<=15))
                res="La cadena introducida tiene entre 5 y 15 caracteres";
            else
                res="La cadena tiene mas de 15 caracteres";     
        if(texto.substring(0,1).equals("a"))
            res=res+" y comienza por a";
        else
            res=res+" y no comienza por a";
        System.out.println(res);
    }
   
}
Título: Re:Ejercicio entrega CU00657B Métodos length y substring de la clase String. Java
Publicado por: Jorge lopez en 18 de Noviembre 2014, 19:01
 Hola resakoso!

Tu ejercicio cumple perfectamente con lo requerido, no obstante te invito a que analices el siguiente código que he editado a partir de el código de tu clase Entradateclado que por cierto tiene un nombre que no cumple con una regla muy importante a la hora de programar.

Esta es la regla o estilo camelCase, exactamente su variación UpperCamelCase
http://es.wikipedia.org/wiki/CamelCase (http://es.wikipedia.org/wiki/CamelCase) donde se usan palabras o frases compuestas, y donde la primera letra de cada palabra se escribe en mayúscula. La variación UpperCamelCase de la regla o etilo CamelCase en java se aplica a nombres de clases, para nombres de variables y métodos que usan palabras o frases compuestas por mas de una palabra, se usa la variación lowerCamelCase. Teniendo esto en cuenta, un nombre correcto para tu clase podría ser EntradaTeclado

A continuación dejo el nuevo código comentado en cada linea donde realice algunos cambios oportunos, a fin de que los analices y conserves lo que creas util:
Código: [Seleccionar]

import java.util.Scanner;

public class EntradaTeclado
{
   
    public EntradaTeclado()
    {
        //nada
    }   
   
   
    public static void main(String[] args)
    {
        String texto;
        String res = "";//inicializamos la variable res, con valor cadena de texto vacia
        Scanner entrada = new Scanner(System.in);
        System.out.print("Introduce texto: ");
        texto = entrada.nextLine();
        int sizeTexto = texto.length();//Capturamos el largo del texto escrito en una variable tipo int
        //En lugar de usar if con else anidando mas if con else, pues usamos if con tantos else if como nos sea necesario.
        if(sizeTexto < 5)
        {
            res = "La cadena introducida tiene menos de 5 caracteres";       
        }
        else if((sizeTexto >= 5)&&(sizeTexto <= 15))
        {
            res = "La cadena introducida tiene entre 5 y 15 caracteres";
        }
        else if(sizeTexto > 15)
        {
            res = "La cadena tiene mas de 15 caracteres";
        }
       
        if(texto.substring(0,1).equalsIgnoreCase("a"))/*Usamos el método equalsIgnoreCase(String anotherString); de la clase String para que el programa sepa
        como comportarse ante una "a" o una "A", Mayúscula/minúscula*/
        {
            res += " y comienza por la letra " + texto.substring(0,1);/*Con este substring extraemos la primera letra del texto para mostrarla por pantalla
            si es una "a" o una "A"*/
        }
        else
        {
            res += " y no comienza por la letra a/A";/*La funcion del operador += es igualar el valor de la variable que lo antecede, a la suma de un nuevo valor
            sobre esta misma variable, es lo mismo que decir: res = res + "nuevo String a sumar"*/
        }
        /*Nota: en tu código descuidas el uso de las llaves {} en los condicionales if, (en ocasiones faltan llaves) aunque el programa de momento se comporte bien
           esto podría ser perjudicial a lo largo, fíjate que yo coloco las {} siempre en su lugar correspondiente.*/
        System.out.println(res);
    }
   
}

Como siempre, cualquier duda no dudes en preguntar.

Saludos!