打印输出直至按键按



这似乎是一个简单的问题,但我似乎无法解决它。我需要将输出(从变量)打印到控制台,直到用户按任何键为止。打印是在此过程中进行的:

int i;
while((i=input.read())!=-1){
  System.out.print((char)i);
}
input.close();

问题在于输入流永远不会达到结束,只等待更多字符进入,从而阻止了更多代码执行。在停止输出时,对于用户来说,这将是很明显的,因此我可以将这项责任赋予用户。只要快速告诉应用程序停止应用程序都没关系(例如,按空间,Enter或任何其他特定键都可以)。

事先感谢,
Vikarjramun

我提出的第一个解决方案是线程控制台输入。线程更新可通过打印代码访问的变量,因此您可以在每个打印语句之前对其进行检查。

import java.util.Scanner;
import java.util.concurrent.atomic.AtomicBoolean;
public class RunUntilKeyPressed {
    static AtomicBoolean hasUserPressedKey = new AtomicBoolean(false);
    public static void main(String[] args) {
        Thread t = new Thread(() -> {
            Scanner scan = new Scanner(System.in);
            System.out.println(scan.next());
            hasUserPressedKey.set(true);
            scan.close();
        });
        t.start();
        while(!hasUserPressedKey.get()) {
           System.out.println(hasUserPressedKey);
        }
    }
}

此代码将运行,直到用户按下任何键(空间除外)并输入,如scan.next()方法获取输入时。

相关内容

  • 没有找到相关文章

最新更新