Lo que se me ha ocurrido es mediante un hilo ir añadiendo los enteros a una lista, y si pasa X tiempo sin que me hayan metido ningún entero, dejar de pedirlos (interrumpir el hilo).
El resto de la aplicación funciona bien, hace los cálculos con los enteros que necesito, deja de pedirlos y tal.
El problema es que la aplicación no finaliza correctamente... ¿por qué? porque necesita el último entero que está esperando scanner...
Pongo en situación:
Entradas:
3
2
25252
233
(Pasan X segundos, ya no se admiten más valores).
(El programa hace sus cálculos).
(El programa muestra el resultado).
(El programa no finaliza...).
25
(El programa finaliza).
He probado scanner.close(), interrumpir el hilo, y nada... ¿Alguna sugerencia?
Son BigInteger, pero bueno:
Código JAVA:
Ver original
import java.math.BigInteger; import java.util.List; import java.util.Scanner; private static List<BigInteger> pila = new ArrayList<BigInteger>(); public prThread() { super(); } public final void run () { while (true) { try { sleep(100); pila.add(scanner.nextBigInteger()); break; } } } h.start(); int pilaTam = -1; int pilaTamAnt; do { pilaTamAnt = pilaTam; pilaTam = pila.size(); if (pilaTam == pilaTamAnt) { h.interrupt(); break; } } while (true); /*Cálculos*/ } }