|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<<2.演算子と制御文の目次 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
問題7(難易度:1) 2004年11月8日 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
次をコンパイル、実行すると、結果はどうなりますか。次から選びなさい。
1: long x, y;
2: x = 2;
3: switch (x) {
4: case 0 :
5: y = x + 1;
6: case 1 :
7: y = x * 2;
8: break;
9: case 2 :
10: case 3 :
11: y = x * 3;
12: break;
13: default :
14: y = 0;
15: }
16: System.out.println(x + " " + y);
A. 3
B. 4
C. 6
D. 0
E. 2行目でコンパイルエラーになる
F. 3行目でコンパイルエラーになる
G. 9行目で実行時エラーになる
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
解説
switch文の( )内の式は、結果がbyte、short、int、char型のいずれかでなければなりません。変数xはlong型なので、3行目でコンパイルエラーになります。
解答 F
参考 読み物Java 第5章 白黒はっきりさせよう |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
問題8(難易度:2) 2004年11月9日 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
次をコンパイル、実行すると、結果はどうなりますか。次から選びなさい。
1: int x, y;
2: for (x = 0; x < 5; x++) {
3: switch (x) {
4: case 0 :
5: y = x + 1;
6: case 1 :
7: y = x * 2;
8: break;
9: case 2 :
10: case 3 :
11: y = x * 3;
12: break;
13: default :
14: y = 0;
15: }
16: System.out.println(x + " " + y);
17: }
A:0 1 B: 0 0 C: 0 0
1 2 1 2 1 2
2 0 2 0 2 6
3 9 3 9 3 9
4 0 4 0 4 0
D:xが2のとき未定義なので、9行目で実行時エラーになる。
E:xが4のとき未定義なので、16行目でコンパイルエラーになる。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
解説
for文で、変数xの値を0から4まで1ずつ増やしています。()内のxはint型なので前問と違いコンパイルエラーにはなりません。さあyの値がどうなるかを図で見てみましょう。
まずxが0のときを考えます。「case 0:」でyに0+1=1が入ります。ここでbreak文がないので、そのまま「case 1:」になだれ込みます。図の青い線でどの文を実行するか示しました。xは0のままなので、yには0*2=0が入り、breakでswitch文を抜けます。よってyは0になります。
次はxが1の場合、「case 1:」のところで1*2=2がyに入り、breakで抜けます。
xが2の場合、「case 2:」には何もやることがありませんが、breakもありません。そこでそのまま「case 3:」に流れ、2*3=6がyに入り、breakで抜けます。
xが4のとき、「case 4:」というのはありません。しかし「default」があるので、ここを実行し、yは0になります。
以上から正解はC。switch文ではbreakの有無に注意しましょう。
解答 C
参考 読み物Java 第5章 白黒はっきりさせよう
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
問題9(難易度:2) 2004年11月9日 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
次をコンパイル、実行すると、結果はどうなりますか。次から選びなさい。
1: int x, y;
2: for (x = 0; x < 5; x++) {
3: switch (x) {
4: case 0 :
5: y = x + 1;
6: case 1 :
7: y = x * 2;
8: break;
9: case 2 :
10: case 3 :
11: y = x * 3;
12: break;
13: }
14: System.out.println(x + " " + y);
15: }
A:0 1 B: 0 0 C: 0 0
1 2 1 2 1 2
2 0 2 0 2 6
3 9 3 9 3 9
4 0 4 0 4 0
D:xが2のとき未定義なので、9行目で実行時エラーになる。
E:xが4のとき未定義なので、14行目でコンパイルエラーになる。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
解説
問題8とちがうのは、「default:」の部分がすっぽりなくなっていることです。xが0〜3については同じですが、4の場合に行き先がなくなってしまいました。yは局所変数なので、何も値をいれずに使うことはできません。よって14行目で出力しようとして、コンパイルエラーになります。
解答 E
参考 読み物Java 第5章 白黒はっきりさせよう |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<<2.演算子と制御文の目次|次問題>> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Copyright (c) 2004 Nagi Imai All Rights Reserved.. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|