1. ホーム
  2. java

[解決済み] Javaでコンソールから1文字を読み取る方法(ユーザーが入力した通りに)?

2022-07-23 12:40:09

質問

Javaで、ユーザが入力した文字列をコンソールから読み取る簡単な方法はありますか?それは可能ですか?私はこれらのメソッドで試してみましたが、それらはすべて、ユーザが を押すまで待ちます。 キーを押すのを待ちます。

char tmp = (char) System.in.read();
char tmp = (char) new InputStreamReader(System.in).read ();
char tmp = (char) System.console().reader().read();           // Java 6

System.inはユーザーの入力を認識するのは を入力する が押されるまで、System.in はユーザーの入力を認識しないのではないかと思い始めています。

どのように解決するのですか?

UNIX システムでは、'stty' コマンドでモードを変更することができます。

さて、Javaに関してですが...以下を参照してください。 PythonとJavaのノンブロッキングコンソール入力 . を抜粋しています。

もしあなたのプログラムがコンソールベースでなければならないのなら 端末をラインモードからキャラクタモードに切り替えて 行モードから文字モードに切り替えなければなりません。 プログラムが終了する前に元に戻すことを に戻す必要があります。オペレーティングシステム間で オペレーティング・システム間でこれを行うポータブルな方法は システム間でこれを行うポータブルな方法はありません。

提案の1つは、JNIを使うことです。 繰り返しになりますが、これはあまりポータブルではありません。 スレッドの最後にある別の提案、および上記の投稿と共通するのは、次のものを使用することを検討することです。 jCurses .