有没有办法检查用户是否在Java中的控制台窗口中键入?
如果我输入内容,我希望程序打印我输入的内容,否则打印出"无输入".
棘手的部分是我希望程序保持循环并打印出"无输入",然后当我输入"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");
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,如果我没有输入任何内容,程序就会卡在那里而不打印"无输入".实际上,从未打印过"无输入".
从命令行,我认为在点击“输入按钮”之前没有机会接收输入。(与“onKeyDown/Up”不同)
但考虑并接受这个限制,一个简单的解决方案是使用Reader.ready():
(..returns)
True如果保证下一个read()不会阻塞输入,false否则。
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");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
933 次 |
| 最近记录: |