LoginSignup
1
0

More than 1 year has passed since last update.

【Java】九九表を作成(桁数を合わせる)

Last updated at Posted at 2021-06-12

九九表を作成する。

Test1.java
public class Test1{
    public static void main(String[] args) {
        for(int i=1; i<=9; i++) {
            System.out.println();

            for(int j=1; j<=9; j++) {
                System.out.printf(" %3d", (i * j));
            }
        }
    }
}

実行結果.

   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

流れ

↓こんな感じ、伝われっっっ!!!

iが1~9に増加
 iのn(1~9番目)が終わったら改行する
 iがn(1~9)の時にjが1~9に増加
  今のiの値とjの値を掛け算する
  掛け算の結果を出力(スペース & 3桁で統一)

(なんとなく)拡張してみたw

iとjの上限値を18まであげただけ。
覚えられるといいね(^^)/

Test2.java
public class Test2{
    public static void main(String[] args) {
        for(int i=1; i<=18; i++) {
            System.out.println();

            for(int j=1; j<=18; j++) {
                System.out.printf(" %3d", (i * j));
            }
        }
    }
}

実行結果.

   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
   2   4   6   8  10  12  14  16  18  20  22  24  26  28  30  32  34  36
   3   6   9  12  15  18  21  24  27  30  33  36  39  42  45  48  51  54
   4   8  12  16  20  24  28  32  36  40  44  48  52  56  60  64  68  72
   5  10  15  20  25  30  35  40  45  50  55  60  65  70  75  80  85  90
   6  12  18  24  30  36  42  48  54  60  66  72  78  84  90  96 102 108
   7  14  21  28  35  42  49  56  63  70  77  84  91  98 105 112 119 126
   8  16  24  32  40  48  56  64  72  80  88  96 104 112 120 128 136 144
   9  18  27  36  45  54  63  72  81  90  99 108 117 126 135 144 153 162
  10  20  30  40  50  60  70  80  90 100 110 120 130 140 150 160 170 180
  11  22  33  44  55  66  77  88  99 110 121 132 143 154 165 176 187 198
  12  24  36  48  60  72  84  96 108 120 132 144 156 168 180 192 204 216
  13  26  39  52  65  78  91 104 117 130 143 156 169 182 195 208 221 234
  14  28  42  56  70  84  98 112 126 140 154 168 182 196 210 224 238 252
  15  30  45  60  75  90 105 120 135 150 165 180 195 210 225 240 255 270
  16  32  48  64  80  96 112 128 144 160 176 192 208 224 240 256 272 288
  17  34  51  68  85 102 119 136 153 170 187 204 221 238 255 272 289 306
  18  36  54  72  90 108 126 144 162 180 198 216 234 252 270 288 306 324

課題

上記のコードには課題がありました。
それは「実行結果の1行目が改行されてしまっている」こと。

僕の知識(というか考え方?)では、ぱっと改善できなかったので、紙とペンを用意して流れを書いてみました。。。

◆Test1.javaの流れ(分かりにくいけどw)
 1. i=1の処理開始
 2. 改行
 3. j=1~9の処理開始
 4. 1~3の繰り返し

簡単に言葉で書くとこんな感じ。
2の改行で出力結果の1行目が改行されてしまう。

てことは、2の改行を消す?
そしたら、i=1の時の処理が終わった後に改行されずに1行にすべて出力されるからNG

理想の出力結果は、j=1~9の処理が終わった後に、改行すること。
(感の悪い僕は、この辺で気づきましたw)

j=1~9の処理が終わった後に、改行するようにしたコードは👇

Test3.java
public class Test2{
    public static void main(String[] args) {
        for(int i=1; i<=9; i++) {
            //System.out.println();  //ここじゃなくて

            for(int j=1; j<=9; j++) {
                System.out.printf(" %3d", (i * j));
            }
            System.out.println();  //ここ
        }
    }
}
実行結果.
   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

うん、いいね、できた!!!

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0