gpt4 book ai didi

java - 打印输出直到按下按键

转载 作者:行者123 更新时间:2023-12-01 08:50:04 28 4
gpt4 key购买 nike

这似乎是一个简单的问题,但我似乎无法解决它。我需要将输出(从变量)打印到控制台,直到用户按下任意键。打印是在 while 循环中完成的,如下所示:

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

问题是输入流永远不会到达末尾,只会等待更多字符进入,从而阻止更多代码执行。何时停止输出对于用户来说是非常明显的,所以我很乐意将这个责任交给用户。用户如何告诉应用程序停止并不重要,只要速度快即可(例如按空格键、Enter 键或任何其他特定键即可)。

提前致谢,
维卡吉拉蒙

最佳答案

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

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

此代码将一直运行,直到用户按下任意键(空格除外)和 Enter,此时 scan.next() 方法获取输入。

关于java - 打印输出直到按下按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42451302/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com