●文字列と数値にして計算できるようにします。逆に数値を文字列にすることも学びます。
●また、エラー処理についても考えてみます。
●CatText.javaを改変して2つのテキストフィールドに入れられた数値を合計するようにします。
●プログラム中の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倍ぐらいになります。これはごく普通のことです。