Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: micaelasol en 29 de Enero 2022, 03:47

Título: Pedir datos en Java por consola (teclado). Escape backslash. System.out CU00657B
Publicado por: micaelasol en 29 de Enero 2022, 03:47
Hola a todos! Aquí va mi respuesta del ejercicio CU00657B del programa formativo programador Java desde cero de aprenderaprogramar.

La cita dice:

Citar
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”.

Puedes comprobar si tus respuestas son correctas consultando en los foros aprenderaprogramar.com.

No la he podido terminar: el punto A, si lo hice:
Citar
a) Si la cadena introducida tiene menos de 5 caracteres, entre 5 y 15 caracteres o más de 15 caracteres.
Pero el B, no entiendo como hacerlo. Se que es con el método "startsWith", pero ya después no se como seguirlo.
Citar
b) Si la cadena introducida comienza por la letra a.


Código:

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

public class ClaseMetodoMain {
   
    public static void main (String [] args){
       
        Scanner entradaEscaner = new Scanner (System.in);

        String entradateclado = "";
       
        System.out.println ("Introduzca una palabra");
       
        entradaTeclado = entradaEscaner.nextLine ();
       
        if (palabra.length() < 5 ){
            System.out.println ("La cadena introducida tiene menos de 5 caracteres");
        } else if (palabra.lenght() >= 5 &&  palabra.lenght() < 15){
            System.out.println ("La cadena introducida tiene entre 5 y 15 caracteres");
        } else if (palabra.lenght() >= 15 ) {
            System.out.println ("La cadena introducida tiene más de 15 caracteres");
        }
       
    }
   
    public boolean startsWith (String prefix){
        //Poner si la palabra introducida epieza con la letra A o no
    }
   
}

Muchas gracias.
Título: Re: Pedir datos en Java por consola (teclado). Escape backslash. System.out.print.
Publicado por: Kabuto en 29 de Enero 2022, 10:57
El método startsWith() pertenece a la clase String, por tanto, se puede invocar directamente desde el objeto donde hemos recogido la palabra introducida por teclado.

Código: [Seleccionar]
        if (palabra.startsWith("a"))
        System.out.println(" y comienza por \"a\"");
        else
        System.out.println(" y no comienza por \"a\"");

Como puedes ver, el argumento que le proporcionamos a ese método es otro String, en este caso un "a", ya que es la letra que queremos comprobar si se encuentra al comienzo de la palabra o no.


Entonces, si ponemos todo esto junto al resto del código, podemos construir una sola oración en pantalla si donde comprobamos las longitudes usamos print() en lugar de println().
Código: [Seleccionar]
public class CU00657B {

public static void main(String[] args) {

Scanner entradaEscaner = new Scanner(System.in);
       
        System.out.println("Introduzca una palabra");
       
        String palabra = entradaEscaner.nextLine();
       
        if (palabra.length() < 5 ){
            System.out.print("La cadena introducida tiene menos de 5 caracteres");
        } else if (palabra.length() >= 5 &&  palabra.length() <= 15){
            System.out.print("La cadena introducida tiene entre 5 y 15 caracteres");
        } else if (palabra.length() > 15 ) {
            System.out.print("La cadena introducida tiene más de 15 caracteres");
        }
       
        if (palabra.startsWith("a"))
        System.out.println(" y comienza por \"a\"");
        else
        System.out.println(" y no comienza por \"a\"");
       
        entradaEscaner.close();
}
}

En pantalla veremos que se construye una sola oración, y se muestran las comillas "" gracias a que usamos el backlash
Citar
Introduzca una palabra
avioneta
La cadena introducida tiene entre 5 y 15 caracteres y comienza por "a"


Por cierto, un último comentario.
En los if else donde comprobamos la longitud de la cadena, están correctísimos y funcionan perfectamente tal cuál están escritos.

Pero hay una redundancia, la que señalo en rojo:
Citar
        if (palabra.length() < 5 ){
            System.out.print("La cadena introducida tiene menos de 5 caracteres");
        } else if (palabra.length() >= 5 &&  palabra.length() <= 15){
            System.out.print("La cadena introducida tiene entre 5 y 15 caracteres");
        } else if (palabra.length() > 15 ) {
            System.out.print("La cadena introducida tiene más de 15 caracteres");
        }
No es necesario preguntar si la cadena es mayor o igual a 15, porque anteriormente ya se ha preguntado por todas las otras posibilidades posibles (valga la redundancia)

Es decir, si ya sabemos que la cadena NO es menor de 5 caracteres, ni tampoco es menor o igual de 15 caracteres, ya la única posibilidad que nos queda es que sea mayor de 15.

Es decir, podemos "ahorrarnos" en el código esa última pregunta.
Si se pone no pasa nada, es correcto. Pero en programación es habitual acabar desarrollando una obsesión por el ahorro je je..

Citar
        if (palabra.length() < 5 ){
            System.out.print("La cadena introducida tiene menos de 5 caracteres");
        } else if (palabra.length() >= 5 &&  palabra.length() <= 15){
            System.out.print("La cadena introducida tiene entre 5 y 15 caracteres");
        } else { //La única posibilidad es que sea mayor de 15
            System.out.print("La cadena introducida tiene más de 15 caracteres");
        }

Un saludo.
Título: Re: Pedir datos en Java por consola (teclado). Escape backslash. System.out.print.
Publicado por: micaelasol en 01 de Febrero 2022, 13:58
Muchísimas gracias! Ya lo he comprendido todo!!
Una última pregunta, en estos ejercicios hace falta poner los métodos "Setters" y "Getters"?
Título: Re: Pedir datos en Java por consola (teclado). Escape backslash. System.out.print.
Publicado por: Kabuto en 01 de Febrero 2022, 18:25
Los getters/ setters están asociados a cuando creamos una clase con atributos que va a representar algún tipo de entidad.

Una clase Persona, con nombre y edad, por ejemplo..
Una clase Coche, con asientos y cilindrada.
Una clase Fraccion, con numerador y denominador..
etc...

En estos casos, sí se usan getter/setter para acceder/modificar el valor de esos atributos.


Pero si la clase que vamos a crear es como en este ejercicio, simplemente para ejecutar una tarea y no para crear objetos que representen alguna entidad, entonces los getter/setter no son necesarios.