2016-12-03 2 views
1

Java初心者はこちら。文字列を入力するときに、ユーザーが入力を完了したことをプログラムに知らせるためには、Enterキーを押す必要があります。Javaでバッファリングされていない入力を実行する方法(可能な場合)?

文字列を入力するためにキー(たとえば、疑問符キー)を入力する代わりに、別のキーを使用する方法はありますか?

+1

どうやって入力していますか?スキャナを使用していますか? –

+0

ええ私はスキャナを使用しています。 – Maazaowski

+0

@Maazaowski私の答えがあなたを助けたら、それを正解とマークしてください(それの横にある目印を押してください)。これにより、将来の訪問者に役立つポストが作成されます。 – progyammer

答えて

3

「バッファ」と呼ばれることはありますか?これは、入力中に入力が保存される一時的なメモリ空間です。 enterを押すとすぐに、バッファーが解放され、データがプログラムに送られます。これは「バッファ入力」と呼ばれます。 Enterキーを押さずに項目を入力するには、バッファを使用してシーンを省略するか、正確には「バッファリングされていない入力」を実行する必要があります。

これを参照してください:Buffered and Unbuffered Streams in Java Javaによって提供されるバッファリングされていないストリームについて知るには彼らは口頭でのみ「バッファリングされていないストリーム」と呼ぶことができます。これは、入力をプログラムに渡すためには、Enterキー(はい、Enterキーのみ)を押し続ける必要があるためです。ただし、InputStreamReaderクラスのread()関数を使用すると、入力の有効範囲は?で終了します(つまり、Enterキーを押した後には、?が読み取られるまでの文字のみ)。

C/C++には、バッファされていない入出力を直接許可するライブラリ関数(stdio.hヘッダファイル内)があります。しかし、Javaでは、そうではありません。単純なコンソールI/Oプログラムを書いているのであれば、このような場合にバッファリングされていない入力を行うのに役立つ方法はわかりません。しかし、GUIプログラムを作成する場合は、event handlingを使用して、キーボードのキーの押下を検出し、その値をプログラムで直接使用して、Enterキーを押さなくてもデータを入力できます(実際にはEnterキー自体は別のキーが押されたものとして認識され、使用できる値が返されます)。例えば

は、KeyListenerインターフェースを実装することができ、keyPressed()方法では、押されたキーの値を決定し、それを使用するgetkeyCode()又はgetkeyChar()機能を使用することができます。これの明確な描写については、この記事を参照してください:Why doesn't the String object display that gets pressed key characters appended to it?

?キー(/キー)が押されたときに入力を終了したい場合は、?を押す前にキーを押すだけで済みます。

これが役に立ちます。


リファレンスを参照してください:

InputStreamReaderののjavadoc:java.io.InputStreamReader

関連する問題