九九表を作成する。
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
うん、いいね、できた!!!