Autor Tema: Comparar Strings en Java, no funcionó usar operador lógico == (CU00657B)  (Leído 2620 veces)

edioswaldo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Buenas noches estimados, estaba resolviendo el ejercicio de java(CU00657B)

Citar
(CU00657B)

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

Pero me topé con un problema al comparar la cadena con el caracter "a", digamos asi <if(textoPrimerCaracter=="a")>, no me realizaba la comparación correctamente aunque la lógica me parecia bien, tuve que emplear un método de String "equalsIgnoreCase()" para poder obtener un valor logico(true o false) de esta forma <esVocaA=texto.equalsIgnoreCase("a");> para poder saber si era la letra "a".

Tuve que investigar tanto en la API de Java como el foro, deberían en el curso editar una nota asi como se informa de los métodos length y substring, aunque si aclaran que hay que "investigar"  pero hay muchos novatos que no saben nada o en mi caso que estoy recordando el lenguaje JAVA que no se puede hacer estas comparaciones de esa forma como si fuesen enteros a menos que se emplee algun método de la clase de JAVA String, afortunadamente recorde algo de otros lenguajes como c++ y python donde me dio una vez problemas con esto.

Es solo una sugerencia, espero no se vayan a molestar por esto.

A continuación mi respuesta al ejercicio, para su revisión estimados amigos.

Código: [Seleccionar]
import java.util.Scanner;//Importación del código de la clase Scanner desde la biblioteca Java
public class TestPrograma2{//Nombre de la clase
       
    //Principal
    public static void main (String []args){
    System.out.println("*****Programa manipulando cadenas*****");
    System.out.println("Ingrese una cadena por teclado:");
    //variables locales
    String cadena, texto ="";
    int tamaño=0;
    boolean esVocalA=false;
    //*************************ingreso por teclado
    Scanner objetoScanner=new Scanner(System.in);//creación de un objeto scanner
    cadena=objetoScanner.nextLine();//invocamos un método sobre un objeto Scanner
   
    texto=cadena.substring(0,1);//obtener primera letra de la cadena
    esVocalA =texto.equalsIgnoreCase("a");//Método de tipo String al comparar dos cadenas indiferente si es mayuscula o minuscula, devuelve true o false
    tamaño=cadena.length();//obtener el tamaño de la cadena
    //********fase de validación tamaño de la cadena
    if( tamaño < 5 ) {//Si tiene menos de 5 caracteres
        texto="tiene menos de 5 caracteres";
    }//cierre primera condición
    else if ( tamaño >= 5 && tamaño <= 15 ) {//Si tiene entre 5 y 15 caracteres
        texto="tiene entre 5 y 15 caracteres";
    }//cierre segunda condición
    else {//Si tiene mas de 15 caracteres
           texto="tiene más de 15 caracteres";
         }//cierre del ELSE
    //********fase de validación si primera letra comienza con "a-A"
    if (esVocalA) //Si es verdadero
             texto+=" y comienza por A ";
    else //Si es falso
             texto+=" y No comienza por A ";
    //Presentar respuesta por pantalla           
    System.out.println("La cadena introducida "+texto);     
    }//cierre del main
}//Cierre de la clase
« Última modificación: 17 de Septiembre 2015, 08:57 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Comparar Strings en Java, no funcionó usar operador lógico == (CU00657B)
« Respuesta #1 en: 17 de Septiembre 2015, 09:03 »
Hola! De ninguna manera nos vamos a molestar porque se hagan comentarios y sugerencias como la que indicas aquí. Al revés, agradecemos todas las sugerencias y tratamos de tenerlas en cuenta, así que gracias por la sugerencia.

El ejercicio lo has resuelto muy bien, de forma un tanto distinta a como han hecho otras personas en los foros, pero muy bien planteado y resuelto. Como sugerencia, trata de usar nombres que describan el cometido de las variables. Por ejemplo has puesto texto=cadena.substring(0,1); pero hubiera sido más descriptivo primeraLetra=cadena.substring(0,1);

Saludos!
« Última modificación: 19 de Septiembre 2015, 12:32 por César Krall »
Responsable de departamento de producción aprenderaprogramar.com

edioswaldo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Re:Comparar Strings en Java, no funcionó usar operador lógico == (CU00657B)
« Respuesta #2 en: 17 de Septiembre 2015, 17:45 »
Gracias César. ;D
Lo que si hago la salvedad del caso, en los temas de más adelante se indica lo de las validaciones con valores tipo String, como iba paso a paso hasta este punto o tema, no tenia idea de como resolverlo jaja.
Y si voy a tomar más en cuenta para la próxima vez tu sugerencia con respecto a la definición de mis variables.

Saludos cordiales y Un abrazo a la distancia, mi estimado.
« Última modificación: 17 de Septiembre 2015, 17:48 por edioswaldo »

 

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