Javaで標準入力(用語)をクリアするには?
少しの歴史: 私は「反射」プログラムを書いています。アルゴリズムは非常に単純です:
wait a random amount of time
print "press enter"
read line
ポイントは、ユーザーが誤ってエンターキーを押した場合、それが読み取られるため、テストが間違っていることです。私の目標は、そのバグを修正することです。そのためには、次のようなアルゴリズムが必要です。
wait a random amount of time
clear stdin
print "press enter"
read line
しかし、私はそれを行う方法を見つけることができません。この投稿は興味深いようです:available
残りの文字数を取得し、skip
それらをスキップします。紙のみでの作業。Enterキーを複数回押してアプリケーションにストレスをかけると、available
メソッドは戻ります
ブロックせずにこの入力ストリームから読み取る (またはスキップする) ことができる推定バイト数
そのため、戻り値が間違っている場合があり、少なくとも 1 つのキャリッジ リターンがバッファに残り、バグがまだ残っています。
この解決策はうまくいくかもしれませんが、それは私がしたくないプラットフォームに依存しています。さらに、Java からシステム ルーチンを呼び出すことは非常に悪い考えです。
再開するには、プログラムの標準入力をクリアしたいのですが、それを閉じたり、ユーザーが入力するのを待ってプログラムをブロックしたりしたくありません。私には非常に基本的な問題のように思えるので、答えが明白であるとしたら恥ずかしいことです!