手動で実行する複数のセグメントを持つ手続き型Javaプログラムがあります(「Enterキーを押して続行」を使用)。JavaはEnterキーを押します(複数のキーを押さないでください)
今私はSystem.in.read()またはScannerを試していましたが、複数のプレスを入力すると自動的に次のセグメントが実行されます。
どうすればこの現象を規制できますか?
手動で実行する複数のセグメントを持つ手続き型Javaプログラムがあります(「Enterキーを押して続行」を使用)。JavaはEnterキーを押します(複数のキーを押さないでください)
今私はSystem.in.read()またはScannerを試していましたが、複数のプレスを入力すると自動的に次のセグメントが実行されます。
どうすればこの現象を規制できますか?
System.in.read()
の代わりにBufferedReader
を使用することをおすすめします。それはあまりにもフラッシュメカニズムを内蔵しています。
次の入力を待つ前に、InputStreamからすべてを削除する必要があります。
System.in.available()
は現在ストリーム内のバイト数を返します。
System.in.read(new byte[System.in.available()]);
これでストリームがクリアされるので、ユーザーはもう一度入力する必要があります。
注:何らかの理由でSystem.in.skip()
が機能しません。
重複:http://stackoverflow.com/questions/18281543/java-using-scanner-enter-key-pressed?rq = 1 –
各セグメントの完了後に入力バッファを空にできますか?私はそれを試していないが、[擬似コード] System.in.read([バイト配列のin.available()の長さ]);すべてを "フラッシュ"する。 –