Java - Tiempo limite en lectura de datos

 
Vista:

Tiempo limite en lectura de datos

Publicado por Daniel (2 intervenciones) el 21/05/2016 20:51:02
Necesito saber si hay alguna manera de hacer que, si despues de cierto tiempo no ingresas un dato por pantalla, la ejecucion del programa continue.

un ejemplo

1
2
system.out.println("ingrese 1 para continuar, si no ingresa nada despues de 1 seg, el programa acabara");
Dato=x.next(); // aca, si despues de 1 seg no escribe nada, se acabe el programa.

agradezco la ayuda :C
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Tiempo limite en lectura de datos

Publicado por Daniel (2 intervenciones) el 22/05/2016 01:18:59
Me arroja el siguente error: local variables referenced from an inner class must be final or effectively final

cabe aclarar que lo que esta escrito arriba va dentro de un metodo que se ejecuta dentro del main, y al ejecutarlo desde el TimerTask arroja ese error

si sirve de algo el IDE Es Bluej
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
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Tiempo limite en lectura de datos

Publicado por Yamil Bracho (2315 intervenciones) el 22/05/2016 06:55:44
Si accedes a un variable desde una clase interna (que es el caso de un TimerTask) la variable debe ser declarada como final.
Prueba haciendo que tu clase herede de TimerTask y solo implementa el metodo run()...
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

Tiempo limite en lectura de datos

Publicado por NoReply (1 intervención) el 10/07/2022 06:12:29
Este fragmento podría ser le útil

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;
class Main{
public static void Main(){
Scanner scan=new Scanner(System.in);
int segActual = (int) System.currenTimeMillis();
int delay = 6000; //6 segundos
while((int)System.currenTimeMillis() <= (segActual + delay)){
//pides tus datos
System.out.println("Ingresa ....");
String dato = scan.nextLine();
System.out.println("El dato es: "+ dato);
}
System.exit(0); //salgo del programa
}
}
En este caso Scanner impide que se detenga la iteración hasta que reciba dato pero si no fuera el caso, al transcurrir el tiempo se detendrá el ciclo.

También puedes crear un hilo e iterarlo.
Luego
Thread.sleep(6000); //6 segundos porque es un ejemplo, tu pones el que quieras.
para pausar el tiempo de ejecución o combinar Timer, TimerTask, etc. Pero NO son opciones viables si deseas establecer un tiempo límite de ejecución, ya que son específicas de tareas repetitivas o con intervalo de tiempo.
Para tu ejemplo, no serían válidos
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

Tiempo limite en lectura de datos

Publicado por Costero (148 intervenciones) el 11/07/2022 21:18:40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.zensei;
 
import java.util.Scanner;
 
public class Main {
 
    private static Scanner scanner;
 
    private static Thread scannerThread = new Thread() {
        public void run() {
            scanner = new Scanner(System.in);
            System.out.println("Ingresa ....");
            String dato = scanner.nextLine();
            System.out.println("El dato es: " + dato);
        }
    };
 
 
    public static void main(String [] args) throws InterruptedException {
 
        scannerThread.start();
 
        long segActual = System.currentTimeMillis();
        int delay = 6000;
        while(System.currentTimeMillis() <= (segActual + delay)) {
//             System.out.println("Corriendo...");
        }
 
        System.out.println("Saliendo del programa");
        System.exit(0); //salgo del programa
    }
}
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

Tiempo limite en lectura de datos

Publicado por Tom (1831 intervenciones) el 12/07/2022 15:57:31
Tambien podeis recordar que hay vida más allá de java.util.Scanner ...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class TimedReads {
	/* */
	public String read(int threshold) throws IOException, InterruptedException {
		long tref = System.currentTimeMillis();
 
		while(System.in.available() < 1) {
			if((tref + threshold) < System.currentTimeMillis()) {
				return null; // TODO Throw some exception ...
			}
			Thread.sleep(10L);
		}
		return new BufferedReader(new InputStreamReader(System.in)).readLine();
	}
 
	/* */
	public static void main(String args[]) throws IOException, InterruptedException {
		System.out.println(new TimedReads().read(5000));
	}
}
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