gpt4 book ai didi

java - 检查用户是否在控制台窗口中输入

转载 作者:搜寻专家 更新时间:2023-10-31 20:33:52 25 4
gpt4 key购买 nike

有没有办法检查用户是否在 Java 的控制台窗口中输入?

我希望程序在我输入内容时打印出我输入的任何内容,否则打印出“无输入”。

棘手的部分是我希望程序不断循环并打印出“No input”,然后当我输入“abc”时,它会立即打印出“abc”。

我尝试使用 Scanner 来执行此操作:

Scanner s = new Scanner(System.in);
while(1){
if(s.hasNext()) System.out.println(s.next());
else System.out.println("No input");
}

但是当我运行它时,如果我没有输入任何内容,程序就会停在那里而不会打印“无输入”。实际上,“无输入”从未被打印出来。

最佳答案

在命令行中,我认为在按下“输入按钮”之前没有机会接收输入。 (不同于“onKeyDown/Up”)

但是考虑并接受这个限制,一个简单的解决方案是使用 Reader.ready() :

(..returns) True if the next read() is guaranteed not to block for input, false otherwise.

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Scanner;

public class Solution {

public static void main(String[] args) throws IOException {
final Reader rdr = new InputStreamReader(System.in);
final Scanner s = new Scanner(rdr);
while (true) {
if (rdr.ready()) {
System.out.println(s.next());
} else {
// use Thread.sleep(millis); to reduce output frequency
System.out.println("No input");
}
}
}
}

关于java - 检查用户是否在控制台窗口中输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28899208/

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