入力した数字を足していくプログラム2

 入力した数字を足していくプログラム で作ったソースに例外処理を記述しました。
ソース
01 : import java.awt.*;
02 : import java.awt.event.*;
03 :
04 : public class Hyouji{
05 :
06 :     Frame frame1 = new Frame("Javaプログラミング");
07 :     TextField text1 = new TextField();
08 :     Button button1 = new Button("リセット");
09 :     Label label1 = new Label("0");
10 :
11 :     public static void main(String[] args){
12 :         Hyouji Hyouji1 = new Hyouji();
13 :         Hyouji1.showFrame();
14 :         }
15 :
16 :     public void showFrame(){
17 :         frame1.setBounds(100,100,350,400);
18 :         text1.setBounds(20,40,100,20);
19 :         button1.setBounds(130,40,100,20);
20 :         label1.setBounds(20,65,300,300);
21 :         label1.setBackground(Color.green);
22 :
23 :         frame1.setLayout(null);
24 :         frame1.add(text1);
25 :         frame1.add(button1);
26 :         frame1.add(label1);
27 :
28 :         frame1.setVisible(true);
29 :
30 :         MyTextActionListener1 mt1 =new MyTextActionListener1();
31 :         text1.addActionListener(mt1);
32 :
33 :         MyButtonActionListener1 mb1 =new MyButtonActionListener1();
34 :         button1.addActionListener(mb1);
35 :
36 :         MyWindowListener1 mw1 = new MyWindowListener1();
37 :         frame1.addWindowListener(mw1);
38 :     }
39 :
40 :
41 :     class MyTextActionListener1 implements ActionListener {
42 :         public void actionPerformed(ActionEvent e){
43 :             try {
44 :                 String str1 = text1.getText();
45 :                 int n1 = Integer.parseInt(str1);
46 :                 String str2 = label1.getText();
47 :                 int n2 = Integer.parseInt(str2);
48 :                 int ans = n1+n2;
49 :                 String res = Integer.toString(ans);
50 :                 label1.setText(res);
51 :                 text1.setText("");
52 :             } catch (NumberFormatException ex) {
53 :                 text1.setText("数字以外はダメ!!");
54 :                 label1.setText("リセットを押してやり直してください");
55 :             }    
56 :         }
57 :     }
58 :
59 :
60 :     class MyButtonActionListener1 implements ActionListener {
61 :         public void actionPerformed(ActionEvent e){
62 :             label1.setText("0");
63 :             text1.setText("");
64 :         }
65 :     }
66 :
67 :
68 :     class MyWindowListener1 extends WindowAdapter {
69 :         public void windowClosing(WindowEvent e){
70 :             System.exit(0);
71 :         }
72 :     }
73 : }


ソースについて(例外処理部分のみ)
 ソースを修正する前にプログラムを実行して、
数字に変換できないテキストを入力してEnterを押すと、
コマンドプロントに次のような文字が表示されました。
Exception in thread "AWT-EventQuseue-0" java.lang.NumberFormatException: For input string: "aa"
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at Hyouji$MyTextActionListner1.actionPerformed(Hyouji.java:45)
    at java.awt.TextField.processActionEvent(Unknown Source)
    at java.awt.TextField.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    ...
    ...
    ...
 修正前のソースの45行目の処理で「java.lang.NumberFormatException」
という例外が発生しているということだと思うので、
そこに例外処理をすればなんとかなりそうです。
 43行目〜55行目
 「try{}」内で例外「NumberFormatException」が発生すると、
「catch (NumberFormatException ex) {}」内の処理をします。

コンパイルと実行
 数字に変換できない文字を入力してEnterをおすと、
テキストフィールドに「数字以外はダメ!!」
ラベルに「リセットを押してやり直してください」
と表示されるようになりました。
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※コメントは表示されません。
Rebuild : 2009/12/16 07:19