数値に変換

入力したテキストを数値にする

文字列と数値にして計算できるようにします。逆に数値を文字列にすることも学びます。

また、エラー処理についても考えてみます。

CatText.java から Wa.javaを作る

CatText.javaを改変して2つのテキストフィールドに入れられた数値を合計するようにします。

ファイル名 Wa.java

プログラム中の4カ所にあるCatTextをWaに変えます。

public class CatText extends JFrame{ など

  ↓

public class Wa extends JFrame{ など

ボタンの文字

たいしたことでないのですが、OKを合計に変えます。

button1 = new JButton("OK");

  ↓

button1 = new JButton("合計");

イベント処理

あとはイベント処理が変わるだけです。

if (e.getSource() == button1) {
      label.setText( text1.getText() + text2.getText() );
}

  ↓

if (e.getSource() == button1) {
      double x,y;
      x = Double.parseDouble(text1.getText());
      y = Double.parseDouble(text2.getText());
      label.setText( Double.toString( x + y ) );
}

x,y にわざわざ代入する必要はないのですが、見やすさのためにこうしました。

処理の内容は

text1 text2 の文字列を数値(double)に変換し、x y にそれぞれ代入

x = Double.parseDouble(text1.getText());
y = Double.parseDouble(text2.getText());

x y の和を求め、文字列に変換

Double.toString( x + y )

それをlabelの文字列として設定する。

label.setText( Double.toString( x + y ) );

右揃え

数値なので右側に揃えたいですね。ラベルはnewでオブジェクトを作るときに、次のようにします。

label = new JLabel("",JLabel.RIGHT);

テキストフィールドはオブジェクトを作ってからsetHorizontalAlignment()で指定します。text1,text2のオブジェクトを作った後に次の2行を加えます。

text1.setHorizontalAlignment(JTextField.RIGHT);
text2.setHorizontalAlignment(JTextField.RIGHT);

エラー処理

数字以外の文字を入力したり、小数点を2つ使ったりすると、エラーが起きてDOSプロンプトにメッセージが出ます。計算の結果は前の計算の値がそのまま残ります。自分で使うだけならこれでもいいのですが、他人に使ってもらうプログラムだとどこが違うかを知らせたり、とりあえず計算結果が出せないことを伝えなければなりません。このような仕事をエラー処理といいます。

いろいろな方法があります。

1.文字列から数値にする前に全部が数字であることを確認する。
2.そもそも数字しか入力できなくする。
3.エラーが起きたときに実行する処理を作って登録しておく

1,2は細かな処理が可能ですが、完全を期するのは難しいです。マイナス記号も入れることがありますが、文字列の途中にあるとエラーになります。小数点が1つ以上ないことも確認しなければなりません。

一般にエラー処理や操作の説明をていねいに入れるとプログラムの量は3倍ぐらいになります。これはごく普通のことです。

もくじ

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