2015年1月26日月曜日

掛け算の九九を表示するプログラム

参考
javaバイブルシリーズ Java入門
P109 演習問題4.5より
以下のような九九表を表示させるプログラムをfor文とwhile文のプログラムで作成しろという問題にチャレンジ
***********
>java Kuku??
 1 2 3 4 5 6 7 8 9
 2 4 6 8 10 12 14 16 18
 3 6 9 12 15 18 21 24 27
 4 8 12 16 20 24 28 32 36
 5 10 15 20 25 30 35 40 45
 6 12 18 24 30 36 42 48 54
 7 14 21 28 35 42 49 56 63
 8 16 24 32 40 48 56 64 72
 9 18 27 36 45 54 63 72 81
***********
P102 確認問題4.2より
こんなプログラムがあった。
------
public class Trace3 {
 public static void main(String[] args) {

  for (int i = 1; i < 4; i++) {
   for (int j = 1; j <= i; j++) {
    System.out.print(" " + (i * j));
   }
   System.out.println();
  }
 }
}
------
実行結果は以下

******
>java Trace3
 1
 2 4
 3 6 9
******
Trace3.javaを編集すれば、九九表がとけそうだ。
そして編集して何度かトライアンドエラーを実施してfor文のパターンは完成
------
public class Kuku2 {
 public static void main(String[] args) {

  for (int i = 1; i < 10; i++) {
   for (int j = 1; j < 10; j++) {
    System.out.print(" " + (i * j));
   }
   System.out.println();
  }
 }
}
------
実行結果
******
>java Kuku2
 1 2 3 4 5 6 7 8 9
 2 4 6 8 10 12 14 16 18
 3 6 9 12 15 18 21 24 27
 4 8 12 16 20 24 28 32 36
 5 10 15 20 25 30 35 40 45
 6 12 18 24 30 36 42 48 54
 7 14 21 28 35 42 49 56 63
 8 16 24 32 40 48 56 64 72
 9 18 27 36 45 54 63 72 81
******
続いてwhile文で作成
P88よりfor文とwhile文の相違点をチェック

whileの場合
---------------------
        i = 1;                      // ④ iを1に初期化
        while (i <= 10) {           // ⑤ iが10以下のとき繰り返す
            sum += i;               // ⑥ 累計エリアにiを加算
            i++;                    // ⑦ iをカウントアップ
        }
---------------------
forの場合
---------------------
        for (i = 1; i <= 10; i++) { // ④、⑤、⑦
            sum += i;               // ⑥ 累計エリアにiを加算
        }
---------------------

何度かトライアンドエラーを繰り返し、while文のパターンも完成。
ポイントは上記④のように初期化の宣言を追記したこと。ついきしないとコンパイルでエラー。

------
public class Kuku1 {
 public static void main(String[] args) {
  int i;
  int j;
 
  i = 1;
  while (i < 10) {
                        j = 0;                       
   while (j < 9) {
                                j++;
    System.out.print(" " + (i * j));
   }
                        i++;
   System.out.println();
  }
 }
}
------
実行結果

******
>java Kuku1
 1 2 3 4 5 6 7 8 9
 2 4 6 8 10 12 14 16 18
 3 6 9 12 15 18 21 24 27
 4 8 12 16 20 24 28 32 36
 5 10 15 20 25 30 35 40 45
 6 12 18 24 30 36 42 48 54
 7 14 21 28 35 42 49 56 63
 8 16 24 32 40 48 56 64 72
 9 18 27 36 45 54 63 72 81
******