problemas con Scanner de Java

Hola! que tal? tengo un problema con la utilización de la clase Scanner de java, copio un fragmento de código para que se entienda mejor:

Scanner entrada = new Scanner(System.in)
String let = entrada.nextLine();
NodoArbol raux = this.buscarHijo(this.raiz, let);

BuscarHijos es un método que tiene como parámetros un nodo del arbol y un string, cuando implemento el codigo copiado anteriormente este método no cumple su función correctamente (dice que la letra let no pertenece al arbol cuando en realidad sí pertenece), pero el problema no es el método buscarHijo en sí mismo porque si en lugar de la variable let pongo,por ejemplo, "a" como parámetro del método este si funciona correctamente..

Estaría muy agradecida si alquien me puede ayudar.. es muy importante!

Saludos!

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

contenido de "let"

y cuando tecleas algo, qué valor tiene la cadena "let"? Tal vez incluye el ENTER, dependiendo del sistema operativo puede que traiga un \r o algo así. Intenta  .

Imagen de benek

Explicación

Puse la explicación como respuesta en otro tema, el funcionamiento de la clase Scanner no es tan intuitivo, lee por aquí:

Saludos.

CRei que habia mejorado pero

CRei que habia mejorado pero recíen estuve probando y me di cuanta de que sigue sin andar..no se que es lo que pasa!!
Hay alguna otra forma de obtener datos ingresados por teclado ademas del Scanner?
Saludos!

Imagen de JaimeItlzc

readLine()

Que onda, ahora cual es el problema que tienes con Scanner? puedes usar readLine() para leer desde consola.

Saludos.

Imagen de santos.r09

Y si pones todo el código ?

Hola PaoCe, porque no pones todo el código que te esta dando el problema. para checar tambien el método BuscarHijo.
Saludos

Imagen de JaimeItlzc

@santos.r09 se fue!

Santos se fue Paoce yo estaba esperando que pusiera el codigo mmmm pero buenoo, espero ayas solucionado tu problema Paoce.

Por aqui andamos.

Saludos.

Aca envio el codido entero:

Aca envio el codido entero:
private Scanner entrada = new Scanner(System.in);

//La idea de este metodo es determinar si una determinada letra es descendiente del nodo n , cada nodo
//tiene como atributo su rpmer hijo y su siguiente hermano
 

Gracias por preocuparse!!

}

Imagen de santos.r09

Ya verificasté que contiene 'let' ?

Buen día PaoCe, oye ya hiciste lo que te dijo ezamudio, lo de utilizar trim(); otra cosa, deberías verificar que contiene la variable let (depués de nextLine()), simplemente imprimela tal cuál y ver que tamaño tiene,   para ver si tienes carácteres raros.
Saludos

Ya probe de imprimer el

Ya probe de imprimer el contenido de let y me parece correctamente, pero sigue sin funcionar correctamente,
Saludos!

Imagen de santos.r09

muy raro ¡

Otro favor pon la descripción del error, textualmente lo que te arroja la JVM, el stacktrace.

Imagen de francisco.santiagoj

Console

Hola PaoCe, en este post, Ezamudio planteo otra forma de leer desde el teclado.

Saludos

no larga un error, el

no larga un error, el problema es que cuando ingreso por telcado una letra que si pertenece al arbol me dice que no, por ejemplo si ingreso por teclado una "a" dice que no pertenece, pero si en lugar de ingresarla por teclado escribo:
raux = this.buscarHijo(this.raiz,"a"), lo encuentra, cuando deberia ser lo mismo!
saludos!!

Imagen de francisco.santiagoj

En tu IDE, corriendo en modo

En tu IDE, corriendo en modo debug , paso por paso, muestra que valor esta guardando esa variable, me late que esta guardando su valor Ascii.

problrma solucionado!!!

problrma solucionado!!! gracias a todos!!

Imagen de francisco.santiagoj

Puedes compartirnos como lo

Puedes compartirnos como lo resolviste?.

Saludos

Imagen de ezamudio

equals()

Esta comparando cadenas con == en vez de equals() y por eso solamente funciona con la "a" en codigo duro; Java internaliza los strings de codigo duro para que todos apunten a la misma instancia pero cuando se captura del teclado es otra instancia aunque tenga el mismo contenido.

Imagen de JaimeItlzc

Entonces seria algo asi?

@ezamudio entonces seria algo asi?

 

Saludos.

¿Por qué no ocupas BufferedReader?

 
En ves de Scanner

¿Cómo lo solucionaste?

:)

Saludos¡

Imagen de ezamudio

equals

Sí, la cosa es cambiar por  . Hay varias redundancias ahí; como   porque   ya es una variable tipo   de modo que es suficiente con poner   además que las estructuras de control están muy mal utilizadas, por ejemplo ese   más bien debe ser un   y de hecho se podría simplificar bastante:

 

Solución

el problema era la comparación de strings, tal como dijo ezamundio..
Muchas gracias a todos por su ayuda!
Saludos!