Autor Tema: EJERCICIO CU00657B Pedir datos en Java por consola (teclado) ejemplo Scanner  (Leído 4187 veces)

rogergcc

  • Sin experiencia
  • *
  • Mensajes: 17
    • Ver Perfil
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”.

Por favor notificar cualquier error, si se puede reducir el codigo y otros. Gracias

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

public class MainScanner {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

         System.out.println ("Por favor introduzca una cadena por teclado:");
         String en = "";
         Scanner sc = new Scanner(System.in);
         en = sc.nextLine();
         String letraInicial=en.substring(0,1);
         System.out.println(letraInicial);
         if (en.length()<5 ) {
                  if (letraInicial.equals("a")) { //No funciona if (letraInicial=="a")  porque ?
                            System.out.println("La cadena introducida tiene menos de  5 caracteres y comienza por la letra a");
                  }
                  else{
                  System.out.println("La cadena introducida tiene menos de  5 caracteres y no comienza por la letra a");
                  }
        }
        else  {
             if (en.length()<16 ) {
                  if (letraInicial.equals("a")) {
                            System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y comienza por la letra a");
                   }
                  else{
                            System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y no comienza por la letra a");
                  }
             }
             else {
                 if (letraInicial.equals("a")) {
                        System.out.println("La cadena introducida tiene mas 15 caracteres y comienza por la letra a");
                 }
                 else{
                        System.out.println("La cadena introducida tiene mas 15 caracteres y no comienza por la letra a");
                 }
             }
        }
    }
   
}

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Hola!!

Bien hecho.

Por cierto, la razón el cual no funciona el if(letraInicial=="a") es que estas usando String... recuerda que String es una clase... y no se puede comparar el contenido de objetos de una clase con "==", solamente este operador funciona con los tipos primitivos (int, char, double, boolean, etc...) en este sentido. Mas adelante al = le vas a ver otros usos entre objetos...

Saludos
"Luchar por tus sueños y cumplirlos... eso es vivir.."

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
aaaah se me pasaba decirte un dato. Este programa solamente te dirá que comienza con "a" si escribes la palabra en minúsculas, ¿Que harías si quisieras decirle al usuario que su palabra empieza con "a" y lo escribe así: Amigo.. ? escribe en tu programa "Amigo" y veras a que me refiero... como solucionarías este pequeño problemita? :)
"Luchar por tus sueños y cumplirlos... eso es vivir.."

rogergcc

  • Sin experiencia
  • *
  • Mensajes: 17
    • Ver Perfil
Código: [Seleccionar]
public class MainScanner {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

         System.out.println ("Por favor introduzca una cadena por teclado:");
         String en = "";
         Scanner sc = new Scanner(System.in);
         en = sc.nextLine();
         String letraInicial=en.substring(0,1);
         System.out.println(letraInicial);
         if (en.length()<5 ) {
                  if (letraInicial.equals("a") || letraInicial.equals("A")) {
                            System.out.println("La cadena introducida tiene menos de  5 caracteres y comienza por la letra a");
                  }
                  else{
                  System.out.println("La cadena introducida tiene menos de  5 caracteres y no comienza por la letra a");
                  }
        }
        else  {
             if (en.length()<16 ) {
                  if (letraInicial.equals("a") || letraInicial.equals("A")) {
                            System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y comienza por la letra a");
                   }
                  else{
                            System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y no comienza por la letra a");
                  }
             }
             else {
                 if (letraInicial.equals("a") || letraInicial.equals("A")) {
                        System.out.println("La cadena introducida tiene mas 15 caracteres y comienza por la letra a");
                 }
                 else{
                        System.out.println("La cadena introducida tiene mas 15 caracteres y no comienza por la letra a");
                 }
             }
        }
    }
   
}

se repite  letraInicial.equals("a") || letraInicial.equals("A")
Se puede hacer algo para reducir el codigo o almancer en una variable u otras cosas
« Última modificación: 25 de Abril 2015, 04:26 por rogergcc »

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Las cosas que te faltan:

Recuerdo que por estos capítulos, ya se había tocado el tema de los operadores lógicos.. veo que no colocaste ninguno.. asi debería ser tu resultado mas o menos (no digo que el tuyo esta mal por cierto):

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

public class StringJAVA {
    static String cadena, sia;
    static int cont;
    static Scanner in = new Scanner (System.in);
    public static void main(String[] args) {
         System.out.println ("Por favor introduzca una cadena por teclado:");
         String en = "";
         Scanner sc = new Scanner(System.in);
         en = sc.nextLine();
         String letraInicial=en.substring(0,1);
         if (en.length()<5 ) System.out.print("La cadena introducida tiene menos de 5 caracteres");
         else if (en.length()>= 5 && en.length()<= 15 ) System.out.print("La cadena introducida tiene entre 5 y 15 caracteres");
         else System.out.print("La cadena introducida tiene mas 15 caracteres");     
         if(letraInicial.equalsIgnoreCase("a"))System.out.println(" y comienza por la letra a");
         else System.out.println(" y no comienza por la letra a");
         }
}

Tu código tenia 44 lineas, este tan solo tiene 20 lineas y funciona exactamente igual... Usaste muchos if... pero tranquilo, estamos aprendiendo!

Las llaves "{}" cuando se trata de mostrar texto por pantalla, no es necesario utilizarlas.. es obligatorio cuando se trata de asignar valores o realizar calculos y operaciones.

Como dijiste estaba bien, pude colocarlo también, pero quiero que veas este equals...

letraInicial.equalsIgnoreCase("a")

Esto ignora letras minúsculas y mayúsculas... osea... si la letra es A entonces pasara a la sentencia, sin importar que sea mayúscula o minúscula.

Espero haberle ayudado, y adelante!
« Última modificación: 25 de Abril 2015, 04:41 por Dan_SB »
"Luchar por tus sueños y cumplirlos... eso es vivir.."

rogergcc

  • Sin experiencia
  • *
  • Mensajes: 17
    • Ver Perfil
Muchas Gracias por la corrección Dan_SB.

 

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".