Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: DavidP83 en 24 de Noviembre 2016, 20:30
-
Este es mi código. Compila pero no funciona. No realiza el primer "if" por lo que entiendo que su resultado es siempre "false" aun comprobando el contenido de "letra" que es correcto. Aunque sea "a" o "A" su contenido, el "if" siempre es falso. Tengo Java 8 SE. Por favor ayúdenme o aclárenme el por qué no es posible mi código :'(.
Gracias.
import java.lang.String; /** Importa clase String para usar "length", "substring" y "equals" (No es necesario) **/
import java.util.Scanner; /** Importa clase Scanner para usar "nextLine" (No es necesario)**/
public class IntroduceCadenaAnalizoCadena{
public static void main(String[] args){
/**ATRIBUTOS MAIN**/
Scanner texto=new Scanner(System.in);
String teclado="";
String letra="";
int tamaño=0;
/** MENSAJE INSTRUCTIVO PARA EL USUARIO **/
System.out.println("Introduce una cadena de caracteres.\nTe indicaremos si empieza por \"A\" o \"a\" y aproximadamente cuantos carácteres la compone.\nRecuerda: Los espacios y signos son caracteres.\nDAME UNA CADENA:");
/** RECOGIDA POR TECLADO **/
teclado=texto.nextLine();
/** FUNCIÓN: Análisis y respuesta al usuario **/
letra=teclado.substring(0,0);
tamaño=teclado.length();
if(letra=="a"||letra=="A"){ /** COMPARA CADENAS: Se puede simplificar usando (teclado.substring(0)=="a") y suprimiendo la variable (letra) y
lo mismo con la variable (tamaño) usando (teclado.length()<5) pero así se entiende mejor.**/
if(tamaño<5 && tamaño!=0){System.out.println("La cadena introducida tiene menos de 5 carácteres y comienza por \"a\".");}
else if(tamaño>=5 && tamaño<=15 && tamaño!=0){System.out.println("La cadena introducida tiene entre 5 y 15 carácteres y comienza por \"a\".");}
else if(tamaño>15 && tamaño!=0){System.out.println("La cadena introducida tiene más de 15 carácteres y comienza por \"a\".");}
else{System.out.println("Error inesperado :-(");}
}else if(tamaño<5 && tamaño!=0){System.out.println("La cadena introducida tiene menos de 5 carácteres y no comienza por \"a\".");}
else if(tamaño>=5 && tamaño<=15 && tamaño!=0){System.out.println("La cadena introducida tiene entre 5 y 15 carácteres y no comienza por \"a\".");}
else if(tamaño>15 && tamaño!=0){System.out.println("La cadena introducida tiene más de 15 carácteres y no comienza por \"a\".");}
else{System.out.println("No has introducido nada :-(");}
}/** Cierre main **/
}/** Cierre Clase **/
-
Hola DavidP83.
Lo primero pedirte que no coloques tus ejercicios en hilos del foro antiguos, porque posiblemente no encuentres respuesta a tus dudas, crea un nuevo hilo y de esta manera mantenemos los foros mas limpios.
Recomendarte leer el siguiente hilo:
https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0
Y sobre tu problema, decirte que no se pueden comparar string de la forma que lo haces.
Esto no es válido:
letra=="a"
tendrías que hacerlo con el método equals():
letra.equals("a")
o para que no tenga en cuenta si está o no está mayúsculas el método equalsIgnoreCase():
letra.equalsIgnoreCase("a")
Saludos. ;D
-
Gracias pedro,,
Solucionado. Ya lo había intentado con "letra.equals("a")" pero al llegar al tema del uso del debugger me he dado cuenta que también estaba usando mal "substring". Me ha venido muy bien que me muestres el uso del "letra.equals("a")".
Perdón por no hacer esta consulta con un hilo nuevo, lo haré así en mi próxima duda.
Mil gracias.
-
Mi código terminado y funcional.
¡¡¡Que aproveche!!! ;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 carácteres y no comienza por a”
**/
import java.lang.String; /** Importa clase String para usar "length", "substring" y "equals" (No es necesario) **/
import java.util.Scanner; /** Importa clase Scanner para usar "nextLine" (Es necesario)**/
public class IntroduceCadenaAnalizoCadena{
public static void main(String[] args){
/**ATRIBUTOS MAIN**/
Scanner texto=new Scanner(System.in);
String teclado="";
String letra="";
int tamaño=0;
/** MENSAJE INSTRUCTIVO PARA EL USUARIO **/
System.out.println("Introduce una cadena de caracteres.\nTe indicaremos si empieza por \"A\" o \"a\" y aproximadamente cuantos carácteres la compone.\nRecuerda: Los espacios y signos son caracteres.\nDAME UNA CADENA:");
/** RECOGIDA POR TECLADO **/
teclado=texto.nextLine();
/** FUNCIÓN: Análisis y respuesta al usuario **/
letra=teclado.substring(0,1);
tamaño=teclado.length();
if(letra.equalsIgnoreCase("a")){ /** COMPARA CADENAS SIN TOMAR EN CUENTA LAS MAYÚSCULAS NI MINÚSCULAS**/
if(tamaño<5 && tamaño!=0){System.out.println("La cadena introducida tiene menos de 5 carácteres y comienza por \"a\".");}
else if(tamaño>=5 && tamaño<=15 && tamaño!=0){System.out.println("La cadena introducida tiene entre 5 y 15 carácteres y comienza por \"a\".");}
else if(tamaño>15 && tamaño!=0){System.out.println("La cadena introducida tiene más de 15 carácteres y comienza por \"a\".");}
else{System.out.println("Error inesperado :-(");}
}else if(tamaño<5 && tamaño!=0){System.out.println("La cadena introducida tiene menos de 5 carácteres y no comienza por \"a\".");}
else if(tamaño>=5 && tamaño<=15 && tamaño!=0){System.out.println("La cadena introducida tiene entre 5 y 15 carácteres y no comienza por \"a\".");}
else if(tamaño>15 && tamaño!=0){System.out.println("La cadena introducida tiene más de 15 carácteres y no comienza por \"a\".");}
else{System.out.println("No has introducido nada :-(");}
} /** CIERRE DEL MAIN **/
} /** CIERRE DE LA CLASE **/
-
Prueba a cambiar esta línea:
letra=teclado.substring(0, 0);
por esta otra:
letra=teclado.substring(0, 1);
También recomendarte que no uses la letra "ñ" en nombres de variables, clases, métodos, etc., para evitar posibles errores.
Aquí te dejo un enlace con el ejercicio resuelto por si te sirve de ayuda:
https://www.aprenderaprogramar.com/foros/index.php?topic=2873.msg13102#msg13102
Saludos.