- ソース
-
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"修正前のソースの45行目の処理で「java.lang.NumberFormatException」
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)
...
...
...
という例外が発生しているということだと思うので、
そこに例外処理をすればなんとかなりそうです。- 43行目〜55行目
- 「try{}」内で例外「NumberFormatException」が発生すると、
「catch (NumberFormatException ex) {}」内の処理をします。
- ソースを修正する前にプログラムを実行して、
- コンパイルと実行
- 数字に変換できない文字を入力してEnterをおすと、
テキストフィールドに「数字以外はダメ!!」
ラベルに「リセットを押してやり直してください」
と表示されるようになりました。
入力した数字を足していくプログラム2
入力した数字を足していくプログラム で作ったソースに例外処理を記述しました。
コメントを書く