Java - ¿Cómo puedo leer por teclado dentro de un bucle sin parar la ejecución del mismo?

   
Vista:

¿Cómo puedo leer por teclado dentro de un bucle sin parar la ejecución del mismo?

Publicado por Pelayo (3 intervenciones) el 15/02/2018 08:51:17
A ver, me explico. En la ejecución de mi bucle, lo que quiero es ofrecer al usuario la posibilidad de introducir un dato por teclado. Sin embargo, quiero que esta opción esté disponible solo durante unos cuantos segundos, y a continuación, que el bucle siga su curso.

Resumiendo, quiero que la lectura por teclado no suponga el bloqueo de la ejecución. He estado intentando hacerlo con las clases Thread, Timer, TimerTask e incluso con Calendar, pero nada, parece que no doy con la tecla.

Agradecería ayuda, que me tiene loco esto! Gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder

¿Cómo puedo leer por teclado dentro de un bucle sin parar la ejecución del mismo?

Publicado por Diego Rodrigo (6 intervenciones) el 15/02/2018 16:07:24
Hola Buen Dia, podrias usar la funcion Thread.sleep(nMiliSegundos);
_en nMiliSegundos puedes introducir la cantidad de MILIsegundos que desees;

el codigo te podria quedar tal que asi:
Scanner entradaDatos = new Scanner(System.in);
String datoIngresado = entradaDatos.nextLine();
Thread.sleep(5000);
System.out.println("Han transcurrido 5s desde que se introdujo el dato");

Tambien tendras que poner al final de la clase donde estem estas lineas de codigo "throws InterruptedException"
Ej:
public static void main(String[] args)throws InterruptedException{
//Lineas de codigo
}

Espero que te haya servido mi aporte,Diego.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

¿Cómo puedo leer por teclado dentro de un bucle sin parar la ejecución del mismo?

Publicado por Pelayo (3 intervenciones) el 15/02/2018 23:25:43
Hola Diego, gracias por responder!

Mira, el tema de usar Thread.sleep en este caso no me vale porque lo que quiero es que el programa haga una cosa u otra en función de si el usuario introduce O NO un dato.

Es decir: si no introduce nada, que vaya por un camino; si sí, por otro. El problema es que por mucho que use Thread.sleep, la entrada de datos bloquea el bucle y se queda estancado. Quiero escribir el código de modo que, pasados 10 segundos, por ejemplo, si no se ha introducido un dato, que continúe con la ejecución del bucle. Si por el contrario, se pulsa una tecla (la que sea), que siga otras instrucciones. Con Timer y TimerTask he podido crear un temporizador, pero solo me ejecuta una pasada y sale del programa. Quiero que tenga tantas iteraciones como le indique.

Espero haberme explicado mejor.

Gracias por la ayuda Diego!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Cómo puedo leer por teclado dentro de un bucle sin parar la ejecución del mismo?

Publicado por Tom (1145 intervenciones) el 16/02/2018 10:33:02
Pues, obviamente, debes hacer la lectura de System.in en otro hilo, que puedas cancelar pasado el tiempo que quieras.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Cómo puedo leer por teclado dentro de un bucle sin parar la ejecución del mismo?

Publicado por Pelayo (3 intervenciones) el 16/02/2018 13:28:50
Vale, pero en el cómo hacer eso me pierdo. Podrías ejemplificarlo con código por favor?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar