Java应用程序将在循环中侦听用户输入而不会暂停

时间:2018-04-07 15:44:07

标签: java multithreading loops input command-line-interface

为简单起见,我希望在终端中有循环逻辑,它将在检查用户输入的同时不间断地处理信息,而无需等待用户输入。

伪:

loop 
    If user input
        See what they've entered
    Do logic loop

注意:我尝试使用带有System.in的扫描仪并尝试查看下一行是否为空。不幸的是,该实现仍然导致应用程序暂停。

1 个答案:

答案 0 :(得分:1)

根据camickr和以下post的评论,您可以使用以下算法:

     public class ScannerRunner implements Runnable {
         private Scanner sc;
         private ScannerRunner() {/* no instantiation without parameters*/}
         public ScannerRunner(Scanner sc) {
            this.sc = sc;
         }
         @Override
         public void run() {     
            System.out.println("Enter The Correct Number ! ");
            int question = sc.nextInt(); 

            while (question!=1){
               System.out.println("please try again ! ");
               question = sc.nextInt(); 
            }
            System.out.println("Success");
        }
     }

然后,在主线程中创建一个扫描程序,然后使用上面的Runner(使用您提供的扫描程序构建)生成一个线程,让主线程监听扫描程序上的输入。 Scanner API应该可以帮到你。