パッケージを利用して入力する方法


■ ダイアログボックスを利用した文字入力

Javaには、GUI作成用のためのクラスにSwingパッケージというのがあります。 このパッケージを利用してデータを入力するプログラムを次に示します。
このプログラムは、名前と年齢を入力し、入力された値をそのまま出力するプログラムです。
// 文字と数値を入力し、それを表示するプログラム例
import javax.swing.*;

public class InputDialog{
    public static void main(String[] arges){
              String name=JOptionPane.showInputDialog("名前を入力して下さい");
              String age=JOptionPane.showInputDialog("年齢を入力して下さい");

              System.out.println("名前:"+ name);
              System.out.println("年齢:"+ age);
              System.exit(0);
    }
}

このプログラムで新しく使われている命令は、以下の4行です。 このうち、2と3は同じ命令です。

  1. import javax.swing.*;

    Swingパッケージを使うということを指示しています。 これをインポートといいます。 インポート命令を書くことにより、それに関連した命令を使うことが可能になります。 ここでは、javax.swing.* と指示しています。この部分は、利用するパッケージによって変わってきます。

  2. String name=JOptionPane.showInputDialog("名前を入力して下さい");

    上記の命令(JOptionPaneクラスのshowInputDialogメソッド)で、次のようなウインドウが表示され、入力ボックスにデータを入力して、[了解]ボタンをクリックすると、そのデータが変数 name に代入されます。 このとき、入力値を受け取る変数は、String(文字列)でなくてはいけません。

  3. String age=JOptionPane.showInputDialog("年齢を入力して下さい");
    この命令も、上記と同様です。ここでは、年齢が入力されますから、数値が入力されることが予想されます。しかし、前に説明しましたように、文字列として受け取る必要があります。ここで、age というString型の変数に代入されています。
  4. System.exit(0);

    この命令により、JOptionPane.showInputDialogで表示されたダイアログボックスが終了し,、ディスプレイ画面から消えます。 この命令を記述しておかないと、プログラムが終了してもダイアログボックスが表示されたままになります。

上記のプログラムは、入力された名前と年齢を、下記のように出力し、ダイアログボックスを終了させ、プログラムが終わります。
[egi@taro]$ java InputDialog
名前:江木鶴子
年齢:45
[egi@taro]$ 

■ 入力した数値を計算に使う

数値を入力して、その値を何らかの計算に使いたい場合は、文字列の数値を数値型に変換する必要があります。
次のプログラムは、身長を入力し、標準体重を計算して出力するプログラムです。
// 数値を入力し、計算結果を表示する。
import javax.swing.*;

public class InputDialog1{
    public static void main(String[] arges){
	String sincho=JOptionPane.showInputDialog("身長を入力して下さい");
                  System.out.println("身長: "+ sincho);
                  int y=Integer.parseInt(sincho);            <--- sinchoを Stringからintへ変換
                  System.out.println("標準体重:" + ((y-100)*0.9)); 
                  System.exit(0);
    }
}
このプログラムで使われている、Integer.parseIntは、IntergerクラスのparseIntメソッドが、( )内に記述されたString型のデータをint型のデータに変換してくれます。

上記のプログラムを実行すると、「身長を入力して下さい」という入力ウインドウが現れ、そこに身長を156と入力すると、次のように結果を出力してプログラムが終了します。

[egi@taro]$ java InputDialog1
身長: 156
標準体重:50.4
[egi@taro]$
■ 入力した値が数値でない場合の処理

上記プログラムの中で、入力した値を、数値の値に変換するために Integer.parseInt(sincho)という命令が実行されています。しかし、この命令を実行する際に、sinchoの中に、数値でないものが入力されていたとすると、javaはそれを数値に変換することができません。 そこで、
    try{ 
                     :
            int sinchox=Integer.parseInt(sincho);
                      :
          }
    catch(NumberFormatException ){
            System.out.println("入力の値が数値ではありません。");
          }

という命令を使用して、数値でないような値がsinchoに入っていた場合は、エラーを出力するようにします。
次のプログラムは、前と同じ身長を入力し、標準体重を計算して出力するプログラムですが、入力の値が数値でない場合は、「入力の値が数値ではありません。」と表示して、標準体重の計算をしないプログラムです。
// 数値を入力し、計算結果を表示する。
import javax.swing.*;

public class InputDialog1{
    public static void main(String[] arges){
        try{
            String sincho=JOptionPane.showInputDialog("身長を入力して下さい");
            System.out.println("身長: "+ sincho);
            int y=Integer.parseInt(sincho);      <--- 誤りがあれば、この命令を実行する時に発覚する
            System.out.println("標準体重:" + ((y-100)*0.9)); 
            System.exit(0);
        }
        catch(NumberFormatException ){
            System.out.println("入力の値が数値ではありません。");
        }
    }
}
[egi@taro]$ java InputDialog1
身長: 15p
入力の値が数値ではありません。
[egi@taro]$

プログラミング / 江木