elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Comprobar entrada del teclado
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Comprobar entrada del teclado  (Leído 3,657 veces)
16BITBoy

Desconectado Desconectado

Mensajes: 137


En mi pompa..


Ver Perfil WWW
Comprobar entrada del teclado
« en: 1 Noviembre 2010, 13:16 pm »

Hola,

He escrito este trozo de código con la intención de que el programa no se pare en caso de que el usuario no haya pulsado una tecla, pero que la recupere en caso de que si lo haya hecho.

Código
  1. private byte checkInput(){
  2.  
  3. Scanner in = new Scanner(System.in);
  4. if(in.hasNext()){
  5. return in.nextByte();
  6. }
  7. return 0;
  8.  
  9. }
  10.  

Esa función hace que cuando llame a in.hasNext() o hasNextByte() se pare esperando a que haya algo que leer y entonces entra al bloque y lo devuelve. Obviamente eso es justo lo que no quiero, por eso creí que llamando a esa función no se pararía (al parecer eso lo hace bien cuando es un fichero :S). ¿Que método puedo utilizar?


En línea

Blog personal: http://www.16bitboy.com/blog

- Que horrible pesadilla, unos y ceros por todas partes... hasta me parecio ver un ¡dos!
- Bender, solo fue una pesadilla, no existe eso que llamas "dos".
KuraraGNU

Desconectado Desconectado

Mensajes: 209



Ver Perfil
Re: Comprobar entrada del teclado
« Respuesta #1 en: 1 Noviembre 2010, 14:14 pm »

¿Por qué pones return 0;?
Intenta hacer un in.close() para que no intente pedirtelo infinitas veces el carácter, claro, que luego tendrías que llamarlo otra vez si se te ha olvidado introducirlo, eso ya lo verás tú en el programa.


En línea

16BITBoy

Desconectado Desconectado

Mensajes: 137


En mi pompa..


Ver Perfil WWW
Re: Comprobar entrada del teclado
« Respuesta #2 en: 1 Noviembre 2010, 14:29 pm »

¿Por qué pones return 0;?
Intenta hacer un in.close() para que no intente pedirtelo infinitas veces el carácter, claro, que luego tendrías que llamarlo otra vez si se te ha olvidado introducirlo, eso ya lo verás tú en el programa.

No me has leído bien :) , el problema esta al llegar a "in.hasNext()", lo del in.Close() por tanto no tiene sentido ( y si lo tiene explícalo que quieres hacer con el :D ) .

La función hasNext() no hace lo propio con un stream de entrada, sino que se queda a la espera y no es lo que quiero.

El return 0 o return "lo que quieras" al final es obvio, esto es una función que retorna un byte; si en caso de que hasNext fuera falso, no retornaría nada. De hecho hago ese return 0 para saber desde fuera de esa función que no ha habido entrada por el teclado.
En línea

Blog personal: http://www.16bitboy.com/blog

- Que horrible pesadilla, unos y ceros por todas partes... hasta me parecio ver un ¡dos!
- Bender, solo fue una pesadilla, no existe eso que llamas "dos".
KuraraGNU

Desconectado Desconectado

Mensajes: 209



Ver Perfil
Re: Comprobar entrada del teclado
« Respuesta #3 en: 1 Noviembre 2010, 14:52 pm »

No me has leído bien :) , el problema esta al llegar a "in.hasNext()", lo del in.Close() por tanto no tiene sentido ( y si lo tiene explícalo que quieres hacer con el :D ) .

Pues como dices que se queda esperando que teclees algo, pues para que deje de hacerlo si no pasa lo del if, no se, nunca he usado eso.
La función hasNext() no hace lo propio con un stream de entrada, sino que se queda a la espera y no es lo que quiero.
¿Puede ser que antes de hacer el hasNext() tengas que hacer el nextbyte() para que tenga algo con lo que comparar? Tampoco he usado nunca el hasNext() sólo he leido la documentación para ver que hace, perdona si no te puedo ayudar mucho :P

El return 0 o return "lo que quieras" al final es obvio, esto es una función que retorna un byte; si en caso de que hasNext fuera falso, no retornaría nada. De hecho hago ese return 0 para saber desde fuera de esa función que no ha habido entrada por el teclado.
Ya x_x me emparanoyé XD
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Respuesta lenta en Shell, la entrada por teclado tarda mcho
GNU/Linux
kkrapul 5 4,875 Último mensaje 14 Diciembre 2010, 14:22 pm
por Bytheface
acentos en consola contra entrada por teclado
Programación C/C++
esbidrus 0 1,613 Último mensaje 27 Abril 2017, 17:10 pm
por esbidrus
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines