■ ダイアログボックスを利用した文字入力 |
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は同じ命令です。
[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と入力すると、次のように結果を出力してプログラムが終了します。
|
■ 入力した値が数値でない場合の処理 |
上記プログラムの中で、入力した値を、数値の値に変換するために 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]$ |
|