Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: resakoso en 18 de Noviembre 2014, 09:15
-
He estado intentando comparar los String con los operadores de comparación, y no ha habido forma. Al final buscando descubrí que esto se hace con equals...
Si hay algo que sería mejor hacerlo de otra forma, agradezco los comentarios :D.
EJERCICIO
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”.
import java.util.Scanner;
public class Entradateclado {
public Entradateclado(){
//nada
}
public static void main(String[] args) {
String texto;
String res;
Scanner entrada=new Scanner(System.in);
System.out.print("Introduce texto: ");
texto=entrada.nextLine();
if(texto.length()<5){
res="La cadena introducida tiene menos de 5 caracteres";
}else
if((texto.length()>=5)&&(texto.length()<=15))
res="La cadena introducida tiene entre 5 y 15 caracteres";
else
res="La cadena tiene mas de 15 caracteres";
if(texto.substring(0,1).equals("a"))
res=res+" y comienza por a";
else
res=res+" y no comienza por a";
System.out.println(res);
}
}
-
Hola resakoso!
Tu ejercicio cumple perfectamente con lo requerido, no obstante te invito a que analices el siguiente código que he editado a partir de el código de tu clase Entradateclado que por cierto tiene un nombre que no cumple con una regla muy importante a la hora de programar.
Esta es la regla o estilo camelCase, exactamente su variación UpperCamelCase
http://es.wikipedia.org/wiki/CamelCase (http://es.wikipedia.org/wiki/CamelCase) donde se usan palabras o frases compuestas, y donde la primera letra de cada palabra se escribe en mayúscula. La variación UpperCamelCase de la regla o etilo CamelCase en java se aplica a nombres de clases, para nombres de variables y métodos que usan palabras o frases compuestas por mas de una palabra, se usa la variación lowerCamelCase. Teniendo esto en cuenta, un nombre correcto para tu clase podría ser EntradaTeclado
A continuación dejo el nuevo código comentado en cada linea donde realice algunos cambios oportunos, a fin de que los analices y conserves lo que creas util:
import java.util.Scanner;
public class EntradaTeclado
{
public EntradaTeclado()
{
//nada
}
public static void main(String[] args)
{
String texto;
String res = "";//inicializamos la variable res, con valor cadena de texto vacia
Scanner entrada = new Scanner(System.in);
System.out.print("Introduce texto: ");
texto = entrada.nextLine();
int sizeTexto = texto.length();//Capturamos el largo del texto escrito en una variable tipo int
//En lugar de usar if con else anidando mas if con else, pues usamos if con tantos else if como nos sea necesario.
if(sizeTexto < 5)
{
res = "La cadena introducida tiene menos de 5 caracteres";
}
else if((sizeTexto >= 5)&&(sizeTexto <= 15))
{
res = "La cadena introducida tiene entre 5 y 15 caracteres";
}
else if(sizeTexto > 15)
{
res = "La cadena tiene mas de 15 caracteres";
}
if(texto.substring(0,1).equalsIgnoreCase("a"))/*Usamos el método equalsIgnoreCase(String anotherString); de la clase String para que el programa sepa
como comportarse ante una "a" o una "A", Mayúscula/minúscula*/
{
res += " y comienza por la letra " + texto.substring(0,1);/*Con este substring extraemos la primera letra del texto para mostrarla por pantalla
si es una "a" o una "A"*/
}
else
{
res += " y no comienza por la letra a/A";/*La funcion del operador += es igualar el valor de la variable que lo antecede, a la suma de un nuevo valor
sobre esta misma variable, es lo mismo que decir: res = res + "nuevo String a sumar"*/
}
/*Nota: en tu código descuidas el uso de las llaves {} en los condicionales if, (en ocasiones faltan llaves) aunque el programa de momento se comporte bien
esto podría ser perjudicial a lo largo, fíjate que yo coloco las {} siempre en su lugar correspondiente.*/
System.out.println(res);
}
}
Como siempre, cualquier duda no dudes en preguntar.
Saludos!