Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Erik_Escriche en 06 de Noviembre 2016, 20:39
-
Buenos días.
Esta es mi propuesta para el ejercicio de la entrega CU00657B de "Aprender programación Java desde cero".
/* 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?
-
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:
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
-
Gracias por contestar, ESOJ. Muy buenas explicaciones, ahora lo he entendido.