Javaでスキャナクラスで空白の入力をキャッチする方法
-
20-09-2019 - |
質問
私は私の前の<のhref = "https://stackoverflow.com/questions/1737611/proper-way-toに代わるものとして、コマンドライン(文字列のみ)からのユーザー入力をキャプチャするためにスキャナクラスを使用しています-read-ユーザー入力からのコマンド・ライン・イン・javaの ">質問するます。
以下は、彼らが必要として、空白行が第2の条件によって捕捉されないを除いて、正常に動作するようです。私はEnterキーを押したときにたとえば、これは、空白行としてキャプチャする必要があると第2の条件が真でなければなりません。私はむしろ、条件付きでロジックよりも、Enterキーを押す続ける場合は、新しい空白行が上向きに「スクロール」全体のコンソールで、コンソールたびに表示されます。
スキャナーを使用して、コマンドラインからの空白の入力をキャッチするための適切な方法はありますか? (誰かがちょうど入る、またはヒットスペース数回して、Enterキーを押す)
何かアドバイスありがとうございます。
Machine aMachine = new Machine();
String select;
Scanner br = new Scanner(System.in);
while(aMachine.stillInUse()){
select = br.next();
if (Pattern.matches("[rqRQ1-6]", select.trim())) {
aMachine.getCommand(select.trim().toUpperCase()).execute(aMachine);
}
/*
* Ignore blank input lines and simply
* redisplay current status -- Scanner doesn't catch this
*/
else if(select.trim().isEmpty()){
aMachine.getStatus();
/*
* Everything else is treated
* as an invalid command
*/
else {
System.out.println(aMachine.badCommand()+select);
aMachine.getStatus();
}
}
解決
Scanner
は、入力用のファイルI / Oの「のためのダミー」実装があります。これは、チュートリアルや教科書の作家がそれの合併症についてうめき声ずにデモコードを記述することができます。
は、
のようなものを言っていますBufferedReader br = new BufferedReader(new FileReader("myfile.txt"))
...そしてあなたが行うことができます。
String line = br.readLine()
と真実が、何も表示されません。
他のヒント
セレクト= br.next();
...ブロックは、適切なトークンを見つけるまで。これは、それが返すようにトークンを見るまで、したがって、あなたが戻ってそれから空白行を取得することはありません待つことを意味します。
これらの行を代入してみます:
//select = br.next(); // old version with Scanner
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
try {
select = bufferedReader.readLine();
} catch (IOException e) {
throw new RuntimeException(e);
}
System.out.println(">" + select + "<"); // should be able to see empty lines now...