continueやbreakなどを使って以下のコードを書きました。
java
1outside1: 2 for(int i1 = 1 ; i1 <= 9 ; i1++){ 3 String disp1 = ""; 4 for(int j1 = 1 ; j1 <= 9 ; j1++){ 5 if(i1*j1 == 54){ 6 break outside1; 7 } 8 disp1 = disp1 + i1*j1 + " "; 9 } 10 System.out.println(disp1); 11 } 12 13 outside2: 14 for(int i2 = 1 ; i2 <= 9 ; i2++){ 15 String disp2 = ""; 16 for(int j2 = 1 ; j2 <= 9 ; j2++){ 17 if(i2*j2 == 54){ 18 continue outside2; 19 } 20 disp2 = disp2 + i2*j2 + " "; 21 } 22 System.out.println(disp2); 23 }
このコードから得られた結果は以下の通りです
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
.
.
.
5 10 ................45
1 2 3.................9
2 4 6................18
.
.
.
5 10.................45
7 14.................63
8 16.................72
という感じになりました。
私が思っていた結果というのは、まずif(i1j1 == 54)では命令している通りならば、積が54になればループからぬけるということであれば、6の段の積は54以外すべて表示されるはずであるのに、実際は5の段までしか表示されていません。また、同様なことが、if(i2j2 == 54)でも言えると思っています。つまり積の結果が54になったときのみ積の結果を表示せずにoutside2のループへ戻るならば、積が54になる(i2, j2) = (6, 9)と(9, 6)のときのみ表示がされないと予想していましたが、6の段と9の段がまるごと表示されていません。どうしてそのようなことが起こるのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/20 07:32