Autor Tema: Pedir datos en Java por consola (teclado). Escape backslash. System.out CU00657B  (Leído 1941 veces)

micaelasol

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
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.
« Última modificación: 17 de Abril 2022, 15:35 por Alex Rodríguez »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
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.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

micaelasol

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Muchísimas gracias! Ya lo he comprendido todo!!
Una última pregunta, en estos ejercicios hace falta poner los métodos "Setters" y "Getters"?

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
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.
« Última modificación: 01 de Febrero 2022, 18:38 por Kabuto »
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".