Autor Tema: Pedir datos por consola, blackslash, print, salto de línea Java CU00657B  (Leído 2607 veces)

Erik_Escriche

  • Principiante
  • **
  • Mensajes: 65
    • Ver Perfil
Buenos días.
Esta es mi propuesta para el ejercicio de la entrega CU00657B de "Aprender programación Java desde cero".

Código: [Seleccionar]
/* Este clase te dice la longitud de la cadena y si esta cadena comienza por la letra a. */
import java.util.Scanner;
public class DescribeCadena {
    public static void main (String [] args) {
        System.out.println ("Introduce un texto.");
        String entradaTeclado = "";
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine (); // Crea un String que se corresponde con el texto introducido.
        int numeroCaracteres = entradaTeclado.length();
        if (numeroCaracteres<5) {
            System.out.print ("La cadena introducida tiene menos de 5 caracteres");
        } else if (numeroCaracteres>=5&&numeroCaracteres<=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");
        }
        String primeraLetra = entradaTeclado.substring(0,1);
        if (primeraLetra.equals ("a") || primeraLetra.equals ("A") || primeraLetra.equals ("á") || primeraLetra.equals ("Á") ) {
            System.out.print (" y comienza por a.\n");
        } else {
            System.out.print (" y no comienza por a.\n");
        }
    }
}

He visto que no puedo usar un código tipo primeraLetra == "a". ¿El operador == solo puede usarse con tipos primitivos?

ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Re:Pedir datos por consola, blackslash, print, salto de línea Java CU00657B
« Respuesta #1 en: 07 de Noviembre 2016, 23:57 »
Buenas noches.

El código es correcto.
Podrías ahorrarte las variables numeroCaracteres y primeraLetra y usar directamente los métodos.
Además usando el método equalsIgnoreCase() en lugar de equals() ya no hace diferencia entre si la letra es mayúscula o minúscula.
Quedaría:
Código: [Seleccionar]
import java.util.Scanner;

public class PruebaTexto1{

    public static void main (String [] args){

        System.out.println("Empezamos el programa");
        System.out.println("Por favor introduzca una cadena por teclado");
        String entradaTeclado = "";
        Scanner entradaEscaner = new Scanner(System.in);//Creacion de un objeto scanner
        entradaTeclado = entradaEscaner.nextLine();
        if (entradaTeclado.length()<5){System.out.print("La palabra introducida tiene menos de 5 caracteres");}
        else if(entradaTeclado.length()==5||entradaTeclado.length()<=15){System.out.print("La palabra introducida tiene entre 5 y 15 caracteres");}
        else{System.out.print("La palabra introducida tiene mas de 15 caracteres");}
        if (entradaTeclado.substring(0,1).equalsIgnoreCase("a")||entradaTeclado.substring(0,1).equalsIgnoreCase("á")){System.out.print(" y empieza por A");}
        else{System.out.print(" y no empieza por A");}
    }
}

En cuanto a la pregunta que hacías de por que no se podía usar == , es porque el método equals y el operador = = hacen dos pruebas completamente diferentes para la igualdad. Mientras que el método equals compara los caracteres contenidos en una String, el operador = = compara dos referencias de objeto para ver si se refieren a la misma instancia. Por tanto, no podemos usar el signo == por que esta sería una comparación binaria de punteros a memoria y no nos devolvería el valor correcto

Erik_Escriche

  • Principiante
  • **
  • Mensajes: 65
    • Ver Perfil
Re:Pedir datos por consola, blackslash, print, salto de línea Java CU00657B
« Respuesta #2 en: 08 de Noviembre 2016, 18:46 »
Gracias por contestar, ESOJ. Muy buenas explicaciones, ahora lo he entendido.

 

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