Foros del Web » Programación para mayores de 30 ;) » Java »

Hilos y Scanner

Estas en el tema de Hilos y Scanner en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 01/05/2012, 11:42
 
Fecha de Ingreso: septiembre-2009
Ubicación: Burgos
Mensajes: 28
Antigüedad: 15 años, 2 meses
Puntos: 1
Hilos y Scanner

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 original
  1. import java.math.BigInteger;
  2. import java.util.List;
  3. import java.util.Scanner;
  4.  
  5. public class prThread extends Thread {
  6.  
  7.     private Scanner scanner = new Scanner(System.in);
  8.    
  9.     private static List<BigInteger> pila = new ArrayList<BigInteger>();
  10.  
  11.     public prThread() {
  12.         super();
  13.     }
  14.  
  15.     public final void run () {
  16.         while (true) {
  17.             try {
  18.                 sleep(100);
  19.                 pila.add(scanner.nextBigInteger());
  20.             } catch (Exception e) {
  21.                 break;
  22.             }
  23.         }
  24.     }
  25.  
  26.     public static void main(String[] args) throws InterruptedException {
  27.         Thread h = new prThread();
  28.         h.start();
  29.         int pilaTam = -1;
  30.         int pilaTamAnt;
  31.        
  32.         do {
  33.             pilaTamAnt = pilaTam;
  34.             pilaTam = pila.size();
  35.             if (pilaTam == pilaTamAnt) {
  36.                 h.interrupt();
  37.                 break;
  38.             }
  39.             Thread.sleep(1000);
  40.         } while (true);
  41.        
  42.         /*Cálculos*/
  43.     }
  44. }

Última edición por JuanLVBR; 01/05/2012 a las 11:45 Razón: Código Java

Etiquetas: hilos, jar, programa, scanner, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:34.