Java程序可以即时显示字符

Java程序可以即时显示字符,java,Java,我想写一个程序,当在控制台中键入字符时,它会立即显示字符。例如,输出要求输入。假设我在控制台中写char'g'。它应该立即显示在控制台中。另外,在输入char之后,我不想按enter键。请向我解释如何实现这一点,并解释概念 我尝试过以下代码: import java.io.*; public class input { public static void main(String[] args) throws IOException { InputStreamRead

我想写一个程序,当在控制台中键入字符时,它会立即显示字符。例如,输出要求输入。假设我在控制台中写char'g'。它应该立即显示在控制台中。另外,在输入char之后,我不想按enter键。请向我解释如何实现这一点,并解释概念

我尝试过以下代码:

import java.io.*;

public class input {

    public static void main(String[] args) throws IOException {
        InputStreamReader ir=new InputStreamReader(System.in);
        System.out.println(ir.read());
    }
}

根据开发环境的不同,
System.console()
可能返回null。就我个人而言,我不确定在这种情况下实例化某种“模拟”控制台最安全的方法是什么

尽管如此,您可以通过使用像这样的本机键侦听器来创建这种错觉,它在没有GUI的情况下侦听按键笔划。按键后,您可以使用
System.out.print
在控制台上打印。这还可以确保当用户键入密钥时,不会输入两次(一次供用户输入,另一次供显示)。从技术上讲,控制台已经在用户键入字母后立即显示它;)


如果要连续获取和打印文本,请将最后两行放入循环。

一点也不琐碎。它需要将控制台更改为原始模式,因为在按下
Enter
之前的输入缓冲是由操作系统完成的。查看SO上的项目。使用system.console时,您将遇到相同的问题。…@AleksanderBlomskold不,您不会。仅仅因为
System.console()
返回null并不意味着
System.out.println
将无法工作。将EclipseLuna与JDK8U31一起使用,
System.console()
为我返回null。这并不意味着我不能使用
println
打印到控制台,我没有考虑空值问题。System.console().reader().read()在返回前也会等待换行。@AleksanderBlomskold我不建议使用
System.console()
。我只提到在某些环境中,根据经验,它可能返回null。我建议使用本机密钥侦听器来接收输入事件是您启动了
System.console()
-OP直接使用
System.in()
String randomWords;
Scanner kb = new  Scanner(System.in);
System.out.print("Please enter words: ");
randomWords = kb.nextLine();
System.out.println(randomWords);