キーボードから1文字入力

とりあえず

キーボードから文字を入力するには、System.in.read() というメソッドが使えます。これを使うためには、最初に、import java.io.* と書いておく必要があります。javaにはたくさんのクラスやメソッドがあり、最初から全部使うことにしておくとコンパイルに時間がかかります。そこで使うクラスやメソッドだけを指定して組み込むようにしてあります。import はそのための記述です。

ファイル名 KeyInput.java (これはまだ不十分です)

次のようにします。

import java.io.*;
public class KeyInput {
    public static void main(String[] args) {
       int  i;
       System.out.println( "文字キーを押してください" );
       i = System.in.read();
       System.out.print( "あなたが押した文字キーは " + (char)i + " です。");
       System.out.println( "その文字コードは " + i + " です。" );
    }
}

System.in.read() はキーボードから入力された文字をチェックして1文字取り込みます。ただし、返すのは文字そのものでなく、文字コード(文字につけられた番号)です。

これを int の i に代入しています。このまま表示すると文字コードになってしまうので、(char)i で文字コードに対応する文字に直しています。

しかし、これだけではコンパイルは通りません。

U:\user\java> javac KeyInput.java
.\keyinput.java:7: 例外 java.io.IOException は報告されません。
スローするにはキャッチまたは、スロー宣言をしなければなりません。
       i = System.in.read();
                         ^
エラー 1 個

改良

キーボード入力中に例外(普通の言語ではエラー)がおきて、プログラムを続けられなくなったときの処理を書かなければならないといっているのです。

ファイル名 KeyInput.java

次のようにします。

import java.io.*;
public class KeyInput {
    public static void main(String[] args) {
       int  i;
       System.out.println( "文字キーを押してください" );
       try{
           i = System.in.read();
           System.out.print( "あなたが押した文字キーは " + (char)i + " です。");
           System.out.println( "その文字コードは " + i + " です。" );
       }
       catch(IOException e){
           System.err.println( "入力エラーです。" );
       }
    }
}

青い部分が書き加えた部分。赤い部分は元からある部分のうち、例外が起きる可能性のある部分と例外が起きたら実行する意味のなくなる部分です。

正常に実行されると次のようになります。もっとも、キーボード入力では、例外があることはめったにおきません。

U:\user\java> java KeyInput
文字キーを押してください
a
あなたが押した文字キーは a です。その文字コードは 97 です。
もくじ

聖愛高等学校
http://www.seiai.ed.jp/
Last Modified