Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查用户是否正在控制台窗口中键入_Java - Fatal编程技术网

Java 检查用户是否正在控制台窗口中键入

Java 检查用户是否正在控制台窗口中键入,java,Java,有没有办法检查用户是否在Java控制台窗口中键入内容 如果我键入了什么,我希望程序打印我键入的任何内容,否则打印出“无输入” 棘手的是,我希望程序不断循环并打印出“无输入”,然后当我键入“abc”时,它会立即打印出“abc” 我尝试使用Scanner执行以下操作: Scanner s = new Scanner(System.in); while(1){ if(s.hasNext()) System.out.println(s.next()); else System.out.p

有没有办法检查用户是否在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");
}

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

从命令行,我看不到在按下“输入”按钮之前接收输入的机会。(与“onKeyDown/Up”不同)

但考虑到并接受这一限制,一个简单的解决方案是使用:

(…返回)
True
如果保证下一个
read()
不会阻止输入,则返回
false


您使用的是哪个操作系统/终端?大致如下:while(1)。。。1是一种什么样的条件?与之比较的是什么?如果是java,则代码无法编译,而(1)是无效的SyntaxyApp,而(1)适用于C/C++但在java中,则需要输入while(true)
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");
            }
        }
    }
}