2016-08-15 107 views
0

如何在Java中等待輸入?Java掃描器中斷等待輸入

 Scanner s = new Scanner() ; 
     s.nextInt(); 
     //here break without input 

我想創建while循環,你可以輸入一些東西5分鐘。 5min後應循環休息。但是當剩下時間時,循環不會再做,但掃描​​儀仍在等待輸入並進入。

我想退出等待輸入,我並不意味着斷開while循環。

+6

http://stackoverflow.com/questions/5853989 /時間限制爲輸入 – ma3stro

+0

@ ma3stro,看起來像重複的好吧 –

回答

-1

試試這個

import java.util.Scanner;

import java.util.concurrent。*;

公共類掃描{

public static void main(String arg[]) throws Exception{ 
    Callable<Integer> k = new Callable<Integer>(){ 

     @Override 
     public Integer call() throws Exception { 
      System.out.println("Enter x :"); 
      return new Scanner(System.in).nextInt(); 
     } 

    }; 
    Long start= System.currentTimeMillis(); 
    int x=0; 
    ExecutorService l = Executors.newFixedThreadPool(1); ; 
    Future<Integer> g; 
    g= l.submit(k); 
    while(System.currentTimeMillis()-start<10000&&!g.isDone()){ 

    } 
    if(g.isDone()){ 
     x=g.get(); 
    } 
    g.cancel(true); 

    if(x==0){ 
     System.out.println("Shut Down as no value is enter after 10s" ); 
    } else { 
     System.out.println("Shut Down as X is entered " + x); 
    } 
    //Continuation of your code here.... 
} 

}

+0

我覺得這太難了。 'System.exit(0)'就是我想要的。 – Magnus2005

+0

不,它不退出程序....但是解決該問題的類在最後一次執行後沒有運行代碼....這就是發生了什麼 – Positive

+0

上面所有的類都是當時間終止等待經過或終止循環時,值進入....這是對這個問題的迴應...對不起,如果這是誤導 – Positive

0

如果我正確理解你的問題,這是你想要什麼:

import java.util.Scanner; 
import java.util.concurrent.FutureTask; 
import java.util.concurrent.TimeUnit; 
import java.util.concurrent.TimeoutException; 

public class Testes { 
    public static void main(String[] args) throws Exception { 
     try { 
      while (true) { 
       System.out.println("Insert int here:"); 
       Scanner s = new Scanner(System.in); 

       FutureTask<Integer> task = new FutureTask<>(() -> { 
        return s.nextInt(); 
       }); 

       Thread thread = new Thread(task); 
       thread.setDaemon(true); 
       thread.start(); 
       Integer nextInt = task.get(5, TimeUnit.MINUTES); 

       System.out.println("Next int read: " + nextInt + "\n----------------"); 
      } 
     } catch (TimeoutException interruptedException) { 
      System.out.println("Too slow, i'm going home"); 
      System.exit(0); 
     } 
    } 
}