プログラム例

  1. コンパイルから実行

    1. コマンド実行

      コマンドプロンプトを立ち上げます。
      <ドライブ名>: でドライブを切り替え(演習室では H:)、cd コマンドでソースファイルのあるフォルダに切り替えます。
      dir コマンドで ソースファイルを確認します。
      C:\Java\jdk>cd classex
      
      C:\Java\jdk\classex>dir
       ドライブ C のボリューム ラベルは COFEEC です
       C:\Java\jdk\classex のディレクトリ
      2009/04/23  10:21       <DIR>          .
      2009/04/23  10:21       <DIR>          ..
      2009/04/22  17:51                  485 MeiboArray.java
      2009/04/23  10:21                  555 Name.java

    2. コンパイル、実行

      MeiboArray.java ファイルをコンパイル、実行します。ファイル名とプログラム中のクラス名は(大文字小文字を含めて)同じでなくてはいけません。
      C:\Java\jdk\classex>javac MeiboArray.java
      
      C:\Java\jdk\classex>java MeiboArray
      Kano:Mayumi(22) 女
      Kato:Kohe(32) 男
      プログラムにエラーがあると、メッセージが表示されます。MeiboArray.java:6: は6行目にエラーがあり、^ はエラーを見つけた場所を示します。
      C:\Java\jdk\classex>javac MeiboArray.java
      MeiboArray.java:6: ';' がありません。
            Name name[] = new Name[3]//3人
                                     ^

    3. コピー

       コマンドプロンプト画面をコピーするには、コマンドプロンプトのタイトルバーを右クリックしメニューを出します。「編集」から「範囲指定」を選択すると、画面をドラッグしてコピー範囲を指定できます。次に、同じメニューで「コピー」を行います。
       適当なエディタ(ワープロ)に貼り付けます。

  2. 変数と繰り返し

    1. 変数と繰り返し(和を求める)

      0から9までを加えるプログラムです。for()の中の、i<10 を i<=10 とすると10まで加えます。
      public class Sum {
      
      //0から9までの和を求める
        public static void main(String[] args) {
          int sum = 0;
          for (int i = 0; i <10; i++) {
            sum = sum + i;//SUMに i を加える
          }
          System.out.println("sum=" + sum);//結果の表示
        }
      }
      結果
      C:\Java\jdk\sample>java Sum
      sum=45

    2. 変数と繰り返し(べき乗)

      2のべき乗を求めます。初期値を1とし、それに2をかけていきます。
      public class Fact {
      //2のべき乗を求める
        public static void main(String[] args) {
          int fact = 1;
          for (int i = 0; i <16; i++) {
            System.out.println(i +":"+ fact);
            fact = fact * 2;
          }
        }
      }
      実行結果
      0:1
      1:2
      2:4
      3:8
      
      11:2048
      12:4096
      13:8192
      14:16384
      15:32768

  3. 配列

    1. 配列の定義と合計

       配列 data[] を初期値を設定して定義します。繰返し文で配列の値を合計します。data.length は配列のサイズを示す定数です。
      public class ArraySum {
      //配列の和を求める
        public static void main(String[] args) {
          double[] data = { 2.3, 4.5, 6.7, 3.2 };//配列と値を定める
      
          double sum = 0.0;
          for (int i = 0; i < data.length; i++) {
            sum = sum + data[i];//sum に i 番目の値を加える
          }
          System.out.println("sum=" + sum);
        }
      }

      実行結果
          sum=16.7

    2. 配列の最大値

      配列の中の最大値を捜します。最初、data[0]を仮の最大値 max とします。順に調べて、max より大きな数が現れたら max の値を更新します。

      public class ArrayMax {
      
        public static void main(String[] args) {
          double[] data = { 2.3, 4.5, 6.7, 3.2 };
      
          double max = data[0];//初期値
          for (int i = 0; i < data.length; i++) {
            if(max < data[i]) max=data[i];//最大値を更新
          }
          System.out.println("max=" + max);
        }
      
      }
      結果
      C:\Java\jdk\arrayMax>java ArrayMax
      max=6.7

    3. 組み合わせた条件

       大小関係を組み合わせた条件の使用例です。条件Aは 2.0より大きく、8.0より小さい場合です。条件Bはその逆で、2.0以下または8.0以上が条件です。
      public class Cond {
      
        public static void main(String[] args) {
          double[] data = { 2.3, 4.5, 1.7, 3.2 ,10.5};
          double max = data[0];
      
          //条件の組み合わせ
          for (int i = 0; i < data.length; i++) {
          //条件の AND
            if(2.0 < data[i] & 8.0 >data[i]) System.out.println("cond A: " + data[i]);
          //条件のOR
            if(2.0 >= data[i] | 8.0 <=data[i]) System.out.println("cond B: " + data[i]);
          }
        }
      }
      実行結果
      cond A: 2.3
      cond A: 4.5
      cond B: 1.7
      cond A: 3.2
      cond B: 10.5

    4. 配列範囲の逸脱とtry-catch

       配列の範囲を逸脱した場合の処理を組み込んでみよう。try-catch の構文の内部で配列処理を実行します。配列の範囲を超えると、ArrayIndexOutOfBoundsException として catch されます。catch 以後の { } でエラー処理を組み込みます。

       e.printStackTrace();

      は、標準のエラー処理で、エラーの起こったメソッドとその行数を教えてくれます。
      public class ArrayRange {
      
        public static void main(String[] args) {
          double[] data = { 2.3, 4.5, 6.7, 3.2 };
          int i=0;
          double sum = 0.0;
      
          try {
            for (i = 0; i < 10; i++) {
              sum = sum + data[i];
            }
            
          } catch (ArrayIndexOutOfBoundsException e) {
            //配列の範囲を超えた
            System.out.println("outofBound:" + i);
            e.printStackTrace();
          }
          System.out.println("sum=" + sum);
        }
      }

      実行結果
      outofBound:4
      java.lang.ArrayIndexOutOfBoundsException: 4
      at ArrayRange.main(ArrayRange.java:22)
      sum=16.7

    5. 名簿

       Nameクラスを利用して、3名の名簿を作成し、young()関数を利用して young でない人を表示します。
      //MeiboArray.java
      public class MeiboArray {
          public static void main(String[] args) {
      
            Name name[] = new Name[3]//3人       
            name[0] = new Name("Kono","Miyuki",18,1);
            name[1] = new Name("Kano","Mayumi",22,1);
            name[2]=new Name();
            name[2].sei="Kato";
            name[2].mei="Kohe";
            name[2].age=32;
            name[2].sex=0;
      
             for(int i=0;i < name.length;i++)
               if(! name[i].young()) System.out.println(name[i]);
          }
      }
       Nameクラスを定義します。このクラスは、名前、年齢、性別、を保持します。Name()はコンストラクタ、young()は、young の判断、toString() はクラスを表示するときの文字列を定義します。
      //Name.java
      class Name{
       String sei;
       String mei;
       int age;
       int sex;//0:男性 1:女性
      
       //コンストラクタ1
       Name(){    
       }
      
       //コンストラクタ2
       Name(String s,String m,int age,int sex){
          sei=s;
          mei=m;
          this.age=age;
          this.sex=sex;
       }
       
       public boolean young(){
          if(sex==0 & age <=20) return true;
          if(sex==1 & age <=18) return true;
          return false;
       }
       
       public String toString(){
          String msg=sei + ":" + mei + "("+age +")";
          if(sex == 0) msg += " 男";
          else msg += " 女";
          return msg;
       }
       
      }

  4. 問題・アンケート

    1. 売り上げの合計

       doouble [] tanka; と int [] kosu ; に適当な個数の単価と個数を初期設定をして下さい。
      売り上げの合計を計算するプログラムを作成して下さい。
      ヒント tanka[i]*kosu[i] でi 番目の商品の売り上げが計算できます。

    2. 0で除算

       0でわり算すると、ArithmeticException の例外が起ります。これを利用して、2を配列
       double[] data = { 2.3, 3.2, 0.0, 3.2 };
      で順にわり算し、エラーが起ったときの配列の番号を表示して下さい。

    3. ソート

      数字の配列を大きさの順に並べ替えるプログラムを作成して下さい。

    4. アンケート

      1:Javaのプログラムのコンパイル・実行はできますか? 1:できる 2:まだ
      2:合計を求めるプログラムは理解できますか? 1:できた 2:たぶん 3:まだ
      3:「組み合わせた条件」プログラムは理解できますか? 1:できた 2:たぶん 3:まだ
      4:「名簿」プログラムは理解できますか? 1:できた 2:たぶん 3:まだ
      5:「組み合わせた条件」のCのプログラムは作成できますか 1:できる 2:たぶん 3:むり