Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: luis sanz en 09 de Agosto 2015, 18:42
-
Mi propuestas de solución para el ejercicio CU00657B:
import java.util.Scanner;
public class Ejercicio
{
public static void main(String[] args)
{
System.out.println("Empezamos el programa, por favor ingrese una cadena:");
String entradaTeclado="";
Scanner entradaEscaner=new Scanner(System.in);
entradaTeclado=entradaEscaner.nextLine();
String x=entradaTeclado.substring(0,1);
int y=entradaTeclado.length();
String letra;
if(x.equals("a"))
{
letra=" si comienza por a";
}
else
{
letra=" no comienza por a";
}
if(y<5)
{
System.out.println("La cadena introducida tiene menos de 5 caracteres y \""+letra+"\"");
}
if(y>5 && y<15)
{
System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y \""+letra+"\"");
}
if(y>15)
{
System.out.println("La cadena introducida tiene mas de 15 caracteres y \""+letra+"\"");
}
}
}
Hola, si se dan cuenta he usado el método equals de la clase String y mi pregunta es si este ejercicio se podría resolver sin utilizar este método y hacerlo tal y como nos indica en el ejercicio usando: condicionales, método length y método substring. He estado probando con muchas lógicas pero la única solución que encontré es usando el método "equals". Le agradecería mucho si me ayudaran a sacarme de esta duda.
-
Hola Luis:
Estuve analizando tu ejercicio y lo veo bien. Igualmente hay algunos detalles a considerar para mejorar tu código.
Contestando a tus preguntas:
1) El método equals() está muy bien utilizado para determinar si la letra inicial de la palabra ingresada es una letra "a".
De todos modos te sugerería que en vez de utilizar el método equals() usaras el método equalsIgnoreCase() para que no discrimine si comienza con una letra "a" o una letra "A".
2) Los métodos lenght() y substring() están muy bien usados también.
Por otro lado habría que hacer una modificación en la línea:
if(y>5 && y<15)
por
if(y>=5 && y<=15)
ya que de lo contrario no estaría contemplada la opción cuando la palabra ingresada tiene 5 letras o 15 letras.
Y como sugerencia final: recomendaría nombrar los atributos con nombres más significativos. Por ejemplo el atributo 'x' podría llamarse más bien 'letraInicial', y el atributo 'y' podría bien llamarse 'longitudPalabra'. Estos nombres están más ligados a lo que representan, y nos va a servir por si en un futuro (u otro programador) tuviera que trabajar sobre el código.
-
Muchísimas gracias mi amigo, se lo agradezco.
-
Ejercicio modificado:
import java.util.Scanner;
public class Ejercicio
{
public static void main(String[] args)
{
System.out.println("Empezamos el programa, por favor ingrese una cadena:");
String entradaTeclado="";
Scanner entradaEscaner=new Scanner(System.in);
entradaTeclado=entradaEscaner.nextLine();
String letraInicial=entradaTeclado.substring(0,1);
int longitudPalabra=entradaTeclado.length();
String letra;
if(letraInicial.equalsIgnoreCase("a"))//equalsIgnoreCase()----> incluye minusculas o mayusculas. en cambio equals solo la que pones en el parentesis
{
letra=" si comienza por a";
}
else
{
letra=" no comienza por a";
}
if(longitudPalabra<5)
{
System.out.println("La cadena introducida tiene menos de 5 caracteres y \""+letra+"\"");
}
if(longitudPalabra>=5 && longitudPalabra<=15)
{
System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y \""+letra+"\"");
}
if(longitudPalabra>15)
{
System.out.println("La cadena introducida tiene mas de 15 caracteres y \""+letra+"\"");
}
}
}