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

Java应用程序,将在循环中侦听用户输入而不暂停,java,multithreading,loops,input,command-line-interface,Java,Multithreading,Loops,Input,Command Line Interface,为了简单起见,我希望在终端中有一个循环逻辑,它可以在检查用户输入的同时不断处理信息,而无需等待用户输入 伪: loop If user input See what they've entered Do logic loop 注意:我已尝试使用System.in的扫描仪,并尝试查看下一行是否为空。不幸的是,该实现仍然会导致应用程序暂停。根据来自和以下的注释,您可以使用以下算法: public class ScannerRunner implement

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

伪:

loop 
    If user input
        See what they've entered
    Do logic loop
注意:我已尝试使用System.in的扫描仪,并尝试查看下一行是否为空。不幸的是,该实现仍然会导致应用程序暂停。

根据来自和以下的注释,您可以使用以下算法:

     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");
        }
     }

然后,在主线程中创建一个扫描器,然后使用上面的运行程序(使用您提供的扫描器构造)生成一个线程,并让主线程侦听扫描器上的输入。应该可以帮助您。

启动第二个线程,扫描仪在该线程上等待输入。就像前面提到的@camickr一样,您是否希望此解决方案继续运行应用程序,以便用户在等待输入时不会遇到暂停?如果是这样的话,那么像上面建议的那样的输入处理线程将非常有效。完美!谢谢你提供的信息。