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一样,您是否希望此解决方案继续运行应用程序,以便用户在等待输入时不会遇到暂停?如果是这样的话,那么像上面建议的那样的输入处理线程将非常有效。完美!谢谢你提供的信息。