1

Javaには、ユーザーがリターンを押したときではなく、「押したときに」押したものを取得する可能性がありますか?

したがって、たとえば、ユーザーがABCを押してからCtrl+Zを押した場合、プログラムがそこで終了し(ストリームの終わりに達した)、その後、ユーザーがReturnキーを押した後ではないようにします。

4

1 に答える 1

4

Ctrl+を押しても、Windowsは実際にはストリームを終了しませんZ。行の編集を続けることができ、アプリケーションは、を押したときにのみストリームの終わりを確認しますReturn

これはUnixとは少し異なり、Ctrl+Dは現在のバッファリングされた行をアプリケーションに(改行なしで)送信し、アプリケーションは、aの後または別の+の後にCtrl+を押して空のバッファを送信した場合にのみ、ストリームの終わりを認識します。DReturnCtrlD

編集:Windowsでは、SetConsoleMode関数を使用して、単一の文字を読み取ることができる場合があります。しかし、あなたがそれをどのように呼ぶかはわかりません。3つの選択肢があるようです。

  1. JNIを介してSetConsoleModeを呼び出すDLLに
  2. SetConsoleModeを呼び出すプログラムを呼び出します
  3. SetConsoleModeを呼び出すランチャーでプログラムをラップします
  4. 編集:JNAを使用してSetConsoleModeを呼び出します。
于 2012-09-13T11:09:02.473 に答える