Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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_Io_Buffer - Fatal编程技术网

如何在Java中执行无缓冲输入(如果可能的话)?

如何在Java中执行无缓冲输入(如果可能的话)?,java,io,buffer,Java,Io,Buffer,这里是Java初学者。当我们输入一个字符串时,我们必须按enter键让程序知道用户已经完成了输入 有没有一种方法可以让我们使用另一个键而不是enter键(例如问号键)来输入字符串?听说过所谓的“缓冲区”吗?它是一个临时内存空间,在您输入时,您的输入将存储在其中。只要按enter键,缓冲区就会释放,数据就会发送到程序。这称为“缓冲输入”。要在不按enter键的情况下输入内容,您必须省略带有缓冲区的场景,或者,准确地说,执行“无缓冲输入” 请参阅本文:了解java提供的无缓冲流。请注意,它们只能通俗

这里是Java初学者。当我们输入一个字符串时,我们必须按enter键让程序知道用户已经完成了输入


有没有一种方法可以让我们使用另一个键而不是enter键(例如问号键)来输入字符串?

听说过所谓的“缓冲区”吗?它是一个临时内存空间,在您输入时,您的输入将存储在其中。只要按enter键,缓冲区就会释放,数据就会发送到程序。这称为“缓冲输入”。要在不按enter键的情况下输入内容,您必须省略带有缓冲区的场景,或者,准确地说,执行“无缓冲输入”

请参阅本文:了解java提供的无缓冲流。请注意,它们只能通俗地称为“无缓冲流”。这是因为您仍然必须按enter键(是,仅限enter键)才能将输入传递给程序。但是,您可以使用
InputStreamReader
类的
read()
函数,仅以
结束输入的作用域(即,按enter键后,仅读取
之前的字符)

在C/C++中,有一些库函数(例如Microsoft编译器识别的
conio.h
头文件中的
getch()
)允许直接进行无缓冲输入/输出。然而,在java中,情况并非如此。如果您正在编写一个简单的控制台I/O程序,我不知道有什么方法可以帮助您在这种情况下执行无缓冲输入。但是,如果您正在制作GUI程序,您可以使用
事件处理
检测键盘上的按键,并直接在程序中使用该值,从而无需按enter键即可输入数据(事实上,enter键本身将被识别为单独按下的键,并返回您可以使用的值)

例如,您可以实现
KeyListener
接口,在
keyPressed()
方法中,您可以使用
getkeyCode()
getkeyChar()
函数来确定按下的键的值并使用该值。有关这方面的清晰说明,请参阅此SO帖子:

如果要在按下
键时结束输入(您指的是
/
键),只需在按下
键之前考虑按键

希望这有帮助


请参阅以供参考:
InputStreamReaderjavadoc:。

您是如何获得输入的?您正在使用扫描仪吗?是的,我正在使用扫描仪。@Maazaowski如果我的答案对您有帮助,请将其标记为正确答案(按旁边的勾号)。这将使这篇文章对未来的访问者更有帮助。