Java – キーボード入力

InputStream

標準入力(System.in)を引数に渡して入力ストリームを生成する。

実行するとプロンプト(>)が表示されて入力待ちになり、文字列を入力してEnterを押すとその内容がオウム返しに表示される。

Scanner

java.util.Scannerの引数に標準入力(System.in)を渡してインスタンスを生成し、next()などのメソッドでキーボードからの入力を得る。

next()

以下のコードは、文字列”end”が入力されるまで、入力された文字列をオウム返しに表示し続ける。

実行例。

nextInt()

実行例。

全角数字も扱える。

3桁ごとのカンマ区切りは通る。

仕様ではInteger正規表現にマッチし、かつ範囲内である必要がある。数値と認識されない文字列に対しては、例外が投げられる。

以下は数値として扱えない。

  • 3桁区切りでないカンマ区切り
  • 全角の漢数字

closeするとSystem.inが使えなくなる

先のコードで、new Scanner(System.in)でインスタンスを生成している行に警告が出る(リソース・リーク: 'scanner' が閉じられることはありません)。

そこで、Scannerインスタンス使用後にいったんclose()してみると、再度インスタンスを生成しようとしたときに例外が投げられる。scannerをクローズしたときに標準入力System.inが閉じられてしまうため。

実行結果。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です