gpt4 book ai didi

java - 可停止的 Java 控制台进度条

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:03:36 25 4
gpt4 key购买 nike

我正在寻找一种方法来停止以下栏的进度:

private static void cancellaaaaaaaaable() throws InterruptedException {
System.out.println("Cancellaaaaaaable!");
System.out.print(ANSI_RED);
for(int i = 0; i < 79; i++){
// Something that allows user input/interaction capable to stop the progressbar
System.out.print("█");
TimeUnit.MILLISECONDS.sleep(500);
}
System.out.print(ANSI_RESET);
}

当进度条开始时,用户应该有大约 40 秒的时间来决定停止和取消进度条。

enter image description here

有办法吗?任何键盘输入都很棒,除了那些粗暴地停止进程的键盘输入。

最佳答案

这是一个灵感来自 how to read from standard input non-blocking? 的解决方案

想法是检查是否有可从 System.in 中读取的内容。

请注意,这仅在输入经过验证(如使用 Enter 键)时有效,但即使是空输入也有效(直接按下 Enter 键),因此您可以添加一些“按 Enter 取消”消息。

private static void cancellaaaaaaaaable() throws InterruptedException {
System.out.println("Cancellaaaaaaable!");
System.out.print(ANSI_RED);

InputStreamReader inStream = new InputStreamReader(System.in);
BufferedReader bufferedReader = new BufferedReader(inStream);
for (int i = 0; i < 79; i++) {

System.out.print("█");
TimeUnit.MILLISECONDS.sleep(500);

// Something that allows user input/interaction capable to stop the progressbar
try {
if (bufferedReader.ready()) {
break;
}
} catch (IOException e) {

e.printStackTrace();
}
}
System.out.print(ANSI_RESET);
}

请注意,您可以使用 Java Curses Library 执行更高级的控制台操作例如。

关于java - 可停止的 Java 控制台进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43974181/

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