如何在 Java 中执行无缓冲输入(如果可能的话)?
How to perform unbuffered input in Java (if at all possible)?
Java 初学者。当我们输入一个字符串时,我们必须按下回车键让程序知道用户已经输入。
有没有办法使用另一个键而不是回车键(例如问号键)来输入字符串?
听说过“缓冲区”吗?它是一个临时存储器 space,在您输入时存储您的输入。一旦按下回车键,缓冲区就会被释放,数据就会被发送到程序中。这称为“缓冲输入”。要在不按回车键的情况下输入内容,您必须省略带缓冲区的场景,或者更准确地说,执行“无缓冲输入”。
查看此 SO post:Buffered and Unbuffered Streams in Java
了解 java 提供的无缓冲流。请注意,它们只能通俗地称为“无缓冲流”。这是因为您仍然需要按回车键(是的,只有回车键)才能将输入传递给程序。但是,您可以使用 InputStreamReader
class 的 read()
函数仅以 ?
结束您的输入范围(即,在按回车键后,只有 [ 之前的字符=13=] 将被读取)。
在C/C++中,有库函数(比如微软编译器识别的conio.h
头文件中的getch()
)允许直接无缓冲input/output。然而在 java 中,情况并非如此。如果您正在编写一个简单的控制台 I/O 程序,我不知道有什么方法可以帮助您在这种情况下进行无缓冲输入。但是,如果你正在制作 GUI 程序,你可以利用 event handling
来检测键盘上的按键按下,并直接在你的程序中使用该值,从而无需按回车键即可输入数据(实际上,输入键本身将被识别为按下的单独键,并且将 return 一个您可以使用的值。
比如可以实现KeyListener
接口,在keyPressed()
方法中,可以使用getkeyCode()
或者getkeyChar()
函数来判断key的值被按下并使用它。要清楚地说明这一点,请参阅此 SO post: .
如果你想在?
键被按下时结束输入(你指的是/
键),你可以只考虑?
之前的按键按下按.
希望对您有所帮助。
参考参考:
InputStreamReader java文档:java.io.InputStreamReader.
Java 初学者。当我们输入一个字符串时,我们必须按下回车键让程序知道用户已经输入。
有没有办法使用另一个键而不是回车键(例如问号键)来输入字符串?
听说过“缓冲区”吗?它是一个临时存储器 space,在您输入时存储您的输入。一旦按下回车键,缓冲区就会被释放,数据就会被发送到程序中。这称为“缓冲输入”。要在不按回车键的情况下输入内容,您必须省略带缓冲区的场景,或者更准确地说,执行“无缓冲输入”。
查看此 SO post:Buffered and Unbuffered Streams in Java
了解 java 提供的无缓冲流。请注意,它们只能通俗地称为“无缓冲流”。这是因为您仍然需要按回车键(是的,只有回车键)才能将输入传递给程序。但是,您可以使用 InputStreamReader
class 的 read()
函数仅以 ?
结束您的输入范围(即,在按回车键后,只有 [ 之前的字符=13=] 将被读取)。
在C/C++中,有库函数(比如微软编译器识别的conio.h
头文件中的getch()
)允许直接无缓冲input/output。然而在 java 中,情况并非如此。如果您正在编写一个简单的控制台 I/O 程序,我不知道有什么方法可以帮助您在这种情况下进行无缓冲输入。但是,如果你正在制作 GUI 程序,你可以利用 event handling
来检测键盘上的按键按下,并直接在你的程序中使用该值,从而无需按回车键即可输入数据(实际上,输入键本身将被识别为按下的单独键,并且将 return 一个您可以使用的值。
比如可以实现KeyListener
接口,在keyPressed()
方法中,可以使用getkeyCode()
或者getkeyChar()
函数来判断key的值被按下并使用它。要清楚地说明这一点,请参阅此 SO post:
如果你想在?
键被按下时结束输入(你指的是/
键),你可以只考虑?
之前的按键按下按.
希望对您有所帮助。
参考参考:
InputStreamReader java文档:java.io.InputStreamReader.