au PAY マーケット

Java (Bronze SE 7/8) 資格試験 Exercise18

Java (Bronze SE 7/8) 資格試験 Exercise18

練習問題1
1 class SwitchTest {
2  public static void main(String[ ] args) {
3   String str = “A”;
4   switch(str + “B”){
5    case “A” :
6     System.out.println( “A” );
7     break;
8    case “B” :
9     System.out.println( “B” );
10     break;
11    case “AB” :
12     System.out.println( “AB” );
13     break;
14    default :
15     System.out.println( “default” );
16   }
17  }
18 }

01上記のコードを確認してください。
このコードをコンパイル、および実行すると、どのような結果になりますか。1つ選択してください。 A. AB
B. default
C. コンパイルエラーが発生する
D. 実行時エラーが発生する

(答え):A

(解説):switch文についての問題です。
●各選択肢の解説は、以下の通りです。

4行目では、switch文の式で+演算子を使用しています。変数strと”B”はともに文字列となりますので、ここでの+演算子は「文字列の連結」を意味する演算子となります。

switch文の式では、最終的な結果がbyte型、short型、int型、char型、enum型、String型の値であれば実行が可能であるため、演算子などを定義することも可能です。

つまり、4行目でのswitch文では”AB”の値をもとに分岐していくため、11行目のcaseが該当します。

したがって、選択肢Aが正解です。


練習問題2
1 public class SwitchTest {
2  public static void main (String[ ] args) {
3   char [ ] array = { ‘a’, ‘b’, ‘c’ };
4   int count = 0;
5
6   for(int i = 0; i < array.length; i++) {
7    switch( array[i] ) {
8     case ‘a’ :
9      count++;
10     case ‘b’ :
11      count++;
12      break;
13     case ‘c’ :
14      count++;
15     case ‘d’ :
16      count++;
17      break;
18    }
19   }
20   System.out.print(“Count = ” + count);
21
22  }
23 }

02上記のコードを確認してください。
このコードをコンパイル、および実行すると、どのような結果になりますか。1つ選択してください。 A. Count = 3
B. Count = 4
C. Count = 5
D. コンパイルエラーが発生する

(答え):C

(解説):switch文についての問題です。
●各選択肢の解説は、以下の通りです。

3行目では、’a’、’b’、’c’ の三つの文字を保持した配列arrayを宣言しています。

4行目ではカウンタ変数countを宣言しています。

6行目で宣言しているfor文では、for文のカウンタ変数で保持する値をもとにswitch文のcase文が選択され、各case文では変数countをインクリメントする処理が実装されています。

1回目のループでは、変数 i が0のときに8行目のcase ‘a’ : へ処理が遷移し、変数countがインクリメントされます。Case文の処理内にbreak文がないため、続けて10行目のcase ‘b’ : へ処理が遷移します。変数countがインクリメントせれた後、break文によってswitch文が終了します。1回目のループが終了した時点で、変数countは2になります。

2回目のループでは、10行目のcase ‘b’ : に処理が遷移し、変数countがインクリメントされた後、break文によってswitch文を終了します。2回目のループが終了した時点で変数countの値は3になります。

3回目のループでは、13行目のcase ‘c’ : に処理が遷移し、変数countがインクリメントされると続けて15行目のcase ‘d’ : が実行されます。さらに変数countがインクリメントされた後、break文によってswitch文は終了し、変数countの値は5になります。

3回目のループが終了した時点でループの判定がfalseになりfor文が終了するため、20行目では「5」が出力されます。

したがって、選択肢Cが正解です。


練習問題3
1 class SwitchTest {
2  public static void main(String[ ] args) {
3   int num = 1;
4   switch( num ) {
5    case ‘1’ :
6     System.out.println(1);
7     break;
8    case ‘2’ :
9     System.out.println(2);
10     break;
11    case ‘3’ :
12     System.out.println(3);
13     break;
14    default :
15     System.out.println(“default”);
16   }
17  }
18 }

03上記のコードを確認してください。
このコードをコンパイル、および実行すると、どのような結果になりますか。1つ選択してください。 A. 1
B. 2
C. 3
D. default
E. コンパイルエラーが発生する

(答え):D

(解説):switch文についての問題です。
●解説は以下の通りです。

  3行目では、int型の変数numを1で初期化し、4行目では、switch文の式に変数numを使用しています。

switch文で定義されている各case文では、シングルクォーテーションで囲んだ’1’、’2’、’3’を使用しています。数値がシングルクォーテーションで囲まれているため、各case文で定義した値はchar型の定数になります。式(int型)とcase文のデータ型(char型)の不一致によりコンパイルエラーが発生すると捉えることもできますが、char型をint型へ代入する場合は暗黙的な型変換が行われるため、コンパイルエラーは発生しません。

ただし、5~11行目のcase文にはどれも一致せず、14行目のdefault文のみ実行されます。

したがって、選択肢Dが正解です。



 ※ char型の文字とint型の値の対応表(一例)
 
char型の文字int型の値
'1'49
'2'50
'3'51

 



恭喜你今天又向前迈进了一小步,明天继续加油哦!

如果你觉得这个网站对学习有帮助,希望你也能分享给身边的好友!

前の記事

N2必备词汇#0013

次の記事

例文-Lesson75
ショップチャンネル