Javaマスターへの道 資格勉強編 Part8
みなさん今日もやりますJava勉強編、今日はとても難しいですが力をつけてJavaマスターを目指しましょう!
それではこのプログラムを解いてみてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class Main { public static void main(String[] args) { int total = 0; a: for(int i = 0; i < 5; i++) { b: for (int j = 0; j < 5; j++) { if (i % 2 == 0) continue a; if (3 < j) break b; total += j; } } System.out.println(total); } } |
さて答えはどうなったでしょうか。
とても複雑ですが、ひとつずつ処理を追ってみましょう。
まず初めはラベルを使っていることがわかりますね、aとbの2種類あります。
aのラベルはcontiueですのでif (i % 2 == 0)がtrueのとき、
上のa:の部分に行きiの値を1増やして同じように処理が続きます。
bのラベルはbreakですのでif (3 < j)がtrueの時、
上のb:の部分に行くのですがそこにあるfor文は抜けるので次の処理はa:の処理となります。
説明は難しいので、簡単な表を使って説明します。
i | j | 結果 | TOTAL |
0 1 1 1 1 1 2 3 3 3 3 3 4 | 0 0 1 2 3 4 0 0 1 2 3 4 0 | continueでラベルaへ totalに0を加算 totalに1を加算 totalに2を加算 totalに3を加算 breakでラベルbへ continueでラベルaへ totalに0を加算 totalに1を加算 totalに2を加算 totalに3を加算 breakでラベルbへ continueでラベルaへ | 0 0 1 3 6 6 6 6 7 9 12 12 12 |
このようになりますので、答えは12となります。
一見すると難しそうではありますが、ひとつずつ書きながらやるとわかりやすくなりますので
諦めずにどんどん問題にチャレンジする精神を持っていきましょう。