当用户在Java中键入时,是否有一种从控制台读取单个字符的简单方法?可能吗?我尝试过这些方法但他们都在等待用户按下回车键:
char tmp = (char) System.in.read();
char tmp = (char) new InputStreamReader(System.in).read ();
char tmp = (char) System.console().reader().read(); // Java 6
Run Code Online (Sandbox Code Playgroud)
我开始认为System.in在按下enter之前不知道用户输入.
这真的是好奇心而不是问题......
为什么Scanner班级没有nextChar()方法?现在看来似乎应该当你认为它有一个事实next,nextInt,nextLine等方法.
我意识到你可以简单地做到以下几点:
userChar = in.next().charAt(0);
System.out.println( userChar );
Run Code Online (Sandbox Code Playgroud)
但为什么没有nextChar()方法呢?
下面的程序打印标准写入的每个字符,但只有在写完新行之后(至少在我的系统上!).
public class Test {
public static void main(String[] args) throws java.io.IOException {
int c;
while ((c = System.in.read()) != -1)
System.out.print((char) c);
}
}
Run Code Online (Sandbox Code Playgroud)
这可以防止人们写"按任意键继续"之类的内容,并强制执行"按Enter键继续"等操作.