e055763
安富 順一

Report#7



[1]課題


  1. 偶数奇数判定プログラム(GUIaa)をタイプし、その動作を考察せよ。
  2. 例外処理について、考察せよ。
  3. 上述のサンプルプログラムに出てきたGUI部品を、全て使ったプログラムを作成せよ。
  4. 摂氏から華氏、華氏から摂氏への温度換算ができるプログラムを作成せよ。
  5. 「電卓」プログラム。中身は自分の思うように。

[2]解答・実行結果・考察


1.偶奇判定


 偶数奇数判定プログラム(GUIaa)をタイプし、その動作を考察せよ。

ソースコード


import java.awt.*;        
import java.awt.event.*;  
/*GUI関係のパッケージをインポート*/

public class GUIaa extends Frame {
    Button b0 = new Button("どっち?");
    Label x0 = new Label("適当な数字を入力し、ボタンを押してください。
    ");
    Label x1 = new Label();
    TextField t0 = new TextField();
    
    public GUIaa() {
        setLayout(null);
        add(t0);
        t0.setBounds(10,40,90,30);
        add(b0);
        b0.setBounds(110,40,100,30);
        add(x0);
        x0.setBounds(10,80,200,30);
        add(x1);
        x1.setBounds(10,20,200,30);
        /*上で生成したオブジェクト群の場所を定義。
          (x座標, y座標, 横幅, 縦幅)*/
        /*setLayout(null);が無かったら、
          上のオブジェクト群の場所が自動的に設定される。*/

        b0.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    int i = (new Integer(t0.getText())).intValue();
                    t0.setText("");
                    if(i % 2.0 == 0) {
                        x1.setText(i + " は偶数です");
                    }
                    else {
                        x1.setText(i + " は奇数です");
                    }
                }
            });
    }

    public static void main(String args[]) {
        Frame win = new GUIaa();
        win.setSize(300,100);
        /*表示するウィンドウの大きさを指定。*/
        win.setVisible(true);
        /*ウィンドウをディスプレイに表示するために必要。*/
        win.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent evt) {
                    System.exit(0);
                }
            });
    }
}
 

実行結果





考察

  1. GUIについて
  2. ソースに出てくるオブジェクトについて
  3. public GUIaa(){}について
  4. ボタンが押されたときの処理(イベント処理)について
  5. この偶数奇数判定プログラムでは、まずTextFieldオブジェクトt0に入力 された数字をt0.getText()を用いて、int型の変数iに格納し、iを2で割って 余りが0ならばt1.setTextに(i + "は偶数です");を、余りが1ならば(i + " は奇数です");を返し、ウィンドウに表示する。

2.例外処理


 例外処理について、考察せよ。

ソースコード

import java.awt.*;        
import java.awt.event.*;  
/*GUI関係のパッケージをインポート*/

public class GUIaa1 extends Frame {
    Button b0 = new Button("どっち?");
    Label x0 = new Label("適当な数字を入力し、ボタンを押してください。
    ");
    Label x1 = new Label();
    TextField t0 = new TextField();
    
    public GUIaa1() {
        setLayout(null);
        add(t0);
        t0.setBounds(10,40,90,30);
        add(b0);
        b0.setBounds(110,40,100,30);
        add(x0);
        x0.setBounds(10,80,200,30);
        add(x1);
        x1.setBounds(10,20,200,30);
        /*上で生成したオブジェクト群の場所を定義。
          (x座標, y座標, 横幅, 縦幅)。
          setLayout(null);が無かったら、
          上のオブジェクト群の場所が自動的に設定される。*/

        b0.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    try {
                        int i = (new
                Integer(t0.getText())).intValue();
                        if(i % 2 == 0) {
                            x1.setText(i + " は偶数です");
                        }
                        else {
                            x1.setText(i + " は奇数です");
                        }
                    }
                                        catch (NumberFormatException
                ex) {
                        x1.setText("数字を入力してください。");
                    }
                }
            });
    }
    
    public static void main(String args[]) {
        Frame win = new GUIaa1();
        win.setSize(300,100);
        /*表示するウィンドウの大きさを指定。*/
        win.setVisible(true);
        /*ウィンドウをディスプレイに表示するために必要。*/
        win.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent evt) {
                    System.exit(0);
                }
            });
    }
}
 

実行結果


 変更前


 変更後

考察

3.GUI部品を使ったプログラム


 上述のサンプルプログラムに出てきたGUI部品を、全て使ったプログラムを 作成せよ。

ソースコード

import java.awt.*;
import java.awt.event.*;

public class GUI1b extends Frame {

    String a,b,c,e,f,g,i,j,k,l,n;
    String d = "ちゃんと";
    String m = "選択して";
    String h = "ください!!";
    int re,gr,wh;
    Color co_re = new Color(200,0,0);
    Color co_gr = new Color(0,200,0);
    Color co_wh = new Color(250,250,250);
    Label t0 = new Label("日本語→英語にします。");
    Label t1 = new Label("↓↓↓");
    Checkbox o0 = new Checkbox("Red?");
    Checkbox o1 = new Checkbox("Green?");
    Choice c0 = new Choice();
    Choice c1 = new Choice();
    Choice c2 = new Choice();
    Button b0 = new Button("GO!!");
    TextField f0 = new TextField();
    List l0 = new List();
    public GUI1b() {
        setLayout(null);
        add (t0); t0.setBounds(10,40,60,30);

        add (o0); o0.setBounds(180,35,60,30);
        o0.addItemListener(new ItemListener() {
                public void itemStateChanged(ItemEvent evt) {
                    re = evt.getStateChange();
                    if ( re == 1) { t0.setBackground(co_re); }
                    else { t0.setBackground(co_wh); }
                }
            });

        add (o1); o1.setBounds(250,35,80,30);
        o1.addItemListener(new ItemListener() {
                public void itemStateChanged(ItemEvent evt) {
                    gr = evt.getStateChange();
                    if ( gr == 1 ) { t0.setBackground(co_gr); }
                    else { t0.setBackground(co_wh); }
                }
            });

        add (c0); c0.setBounds(10,70,100,30);
        c0.add("私は"); a = "私は";
        c0.add("彼は"); b = "彼は";
        c0.addItemListener(new ItemListener() {
                public void itemStateChanged(ItemEvent evt) {
                    c = c0.getSelectedItem();
                    if ( c == a ) { d = "I "; }
                    else if ( c == b ) { d = "He "; }
                }
            });

        add (c1); c1.setBounds(120,70,100,30);
        c1.add("あなたが"); e = "あなたが";
        c1.add("Javaが"); f = "Javaが";
        c1.addItemListener(new ItemListener() {
                public void itemStateChanged(ItemEvent evt) {
                    g = c1.getSelectedItem();
                    if ( g == e ) { h = "you."; }
                        else if ( g == f ) { h = "Java."; }
                }
            });
    
        add (c2); c2.setBounds(230,70,100,30);
        c2.add("嫌いです。"); i = "嫌いです。";
        c2.add("好きです。"); j = "好きです。";
        c2.addItemListener(new ItemListener() {
                public void itemStateChanged(ItemEvent evt) {
                    k = c2.getSelectedItem();
                    if ( k == i ) { m = "hate "; }
                    else if ( k == j ) { m = "love "; }
                }
            });

        add (b0); b0.setBounds(130,140,100,30);
        b0.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    n = d + m + h;
                    f0.setText(n);
                }
            });

        add (t1); t1.setBounds(160,180,60,50);

        add (f0); f0.setBounds(10,200,330,70);

        add (l0); l0.setBounds(270,300,60,40);
        l0.add("も"); l0.add("う"); l0.add("馬太"); l0.add("目");
        l0.add("で"); l0.add("す"); l0.add("ね");
    }
    
    public static void main(String args[]) {
        Frame win = new GUI1b();
        win.setSize(350,350);
        win.setVisible(true);
        win.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent evt) {
                    System.exit(0);
                }
            });
    }
}
 

実行結果


考察

4.摂氏→華氏、華氏→摂氏


 摂氏から華氏、華氏から摂氏への温度換算ができるプログラムを作成せよ。

ソースコード

import java.awt.*;
import java.awt.event.*;

public class Temp extends Frame {

    int a;
    String k,l,m,n,o;
    TextField t0 = new TextField();
    Label l0 = new Label("調べたい温度を入力....");
    TextField t1 = new TextField();
    Label l1 = new Label("変換結果.....");
    Choice c0 = new Choice();
    Button b0 = new Button("変換します。");

    public Temp() {
        setLayout(null);
        add (t0); t0.setBounds(10,30,200,40);

        add (l0); l0.setBounds(10,80,80,50);
    
        add (c0); c0.setBounds(120,100,150,40);
        c0.add("摂氏 → 華氏"); k = "摂氏 → 華氏";
        c0.add("華氏 → 摂氏"); l = "華氏 → 摂氏";
        c0.addItemListener(new ItemListener() {
                public void itemStateChanged(ItemEvent evt) {
                    m = c0.getSelectedItem();
                    if ( m == k ) { a = 1; }
                    else if ( m == l ) { a = 0; }
                }
            });

        add (b0); b0.setBounds(120,150,150,40);
        b0.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    if ( a == 1 ) {
                        try {
                            int b = (new
        Integer(t0.getText())).intValue();
                            double c = (b*1.8+32);
                            t1.setText("" + c );
                        }catch(Exception ex) {
                            t1.setText("問題発生。\n考えられる問題。\
        n1.数字を入力していない。\n2.摂氏 → 華氏のボタンを選択してい
        ない。");
                        }
                    }
                    else if ( a == 0 ) {
                        try {
                            int b = (new
        Integer(t0.getText())).intValue();
                            double c = (b-32)/1.8;
                            t1.setText(""+ c );
                        }catch(Exception ex) {
                            t1.setText("問題発生。\n考えられる問題。\
        n1.数字を入力していない。\n2.摂氏 → 華氏のボタンを選択してい
        ない。");
                        }
                    }
                }
            });

        add (l1); l1.setBounds(180,200,80,40);

        add (t1); t1.setBounds(180,230,200,40);
    }

    public static void main(String args[]) {
        Frame win = new Temp();
        win.setSize(400,290);
        win.setVisible(true);
        win.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent evt) {
                    System.exit(0);
                }
            });
    }
}
 

実行結果


考察

5.電卓


「電卓」プログラム。中身は自分の思うように。

ソースコード

import java.awt.*;
import java.awt.event.*;

public class Cal extends Frame {

    int a;
    String k,l,m,n,o;
    TextField t0 = new TextField();
    TextField t1 = new TextField();
    Label l0 = new Label("result...");
    Label l1 = new Label();
    Choice c0 = new Choice();
    Button b0 = new Button(" = ");

    public Cal() {
        setLayout(null);
        add (t0); t0.setBounds(10,30,50,40);
        add (c0); c0.setBounds(70,30,50,40);
        c0.add(" + "); k = " + ";
        c0.add(" ー "); l = " ー ";
        c0.add(" × "); m = " × ";
        c0.add(" ÷ "); n = " ÷ ";
        c0.addItemListener(new ItemListener() {
                public void itemStateChanged(ItemEvent evt) {
                    o = c0.getSelectedItem();
                    if ( o == k ) { a = 1; }
                    else if ( o == l ) { a = 2; }
                    else if ( o == m ) { a = 3; }
                    else if ( o == n ) { a = 4; }
                }
            });

        add (t1); t1.setBounds(150,30,50,40);

        add (b0); b0.setBounds(210,30,50,40);
        b0.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    if ( a == 1 ) {
                        try {
                        int b = (new
        Integer(t0.getText())).intValue();
                        int c = (new
        Integer(t1.getText())).intValue();
                        double d = b + c;
                        l0.setText("" + d);
                        l1.setText("こうなりました");
                        }catch(Exception ex) {
                            l0.setText("");
                            l1.setText("Error....\n1.数字を入力してく
        ださい。\n2.演算の方法を選んでください。");
                        }
                    }
                    else if ( a == 2 ) {
                        try {
                            int b = (new
        Integer(t0.getText())).intValue();
                            int c = (new
        Integer(t1.getText())).intValue();
                            double d = b - c;
                            l0.setText("" + d);
                            l1.setText("こうなりました");
                        }catch(Exception ex) {
                            l0.setText("");
                            l1.setText("Error....\n1.数字を入力してく
        ださい。\n2.演算の方法を選んでください。");
                        }
                    }
                    else if ( a == 3 ) {
                        try {
                            int b = (new
        Integer(t0.getText())).intValue();
                            int c = (new
        Integer(t1.getText())).intValue();
                            double d = b * c;
                            l0.setText("" + d);
                            l1.setText("こうなりました");
                        }catch(Exception ex) {
                            l0.setText("");
                            l1.setText("Error....\n1.数字を入力してく
        ださい。\n2.演算の方法を選んでください。");
                        }
                    }
                    else if ( a == 4 ) {
                        try {
                            int b = (new
        Integer(t0.getText())).intValue();
                            int c = (new
        Integer(t1.getText())).intValue();
                            double d = b / c;
                            l0.setText("" + d);
                            l1.setText("こうなりました");
                        }catch(Exception ex) {
                            l0.setText("");
                            l1.setText("Error....\n1.数字を入力してく
        ださい。\n2.演算の方法を選んでください。");
                        }
                    }
                    else { l1.setText("Error....\n1.数字を入力してく
        ださい。\n2.演算の方法を選んでください。");
                    }
                }
            });

        add (l0); l0.setBounds(270,30,50,40);

        add (l1); l1.setBounds(10,70,330,100);
    }

    public static void main(String args[]) {
        Frame win = new Cal();
        win.setSize(330,120);
        win.setVisible(true);
        win.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent evt) {
                    System.exit(0);
                }
            });
    }
}
 

実行結果


   

考察

[3]感想


 実行結果が文字化けしてしまったときはあせった。
 でもそのおかげで、eclipseの使い方が分かってよかった。

[4]参考文献


PukiWiki プログラミングIIへ
とっぷにもどる