El problema es el siguiente, tengo que leer X enteros por teclado, no sé cuántos, ni me indican de ninguna forma que ya no quieren meter más.
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 originalimport java.math.BigInteger;
import java.util.List;
import java.util.Scanner;
public class prThread
extends Thread {
private Scanner scanner
= new Scanner
(System.
in);
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*/
}
}