au PAY マーケット

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

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

練習問題1
1 class ForTest {
2  public static void main(String[ ] args) {
3   String[ ] color = { “red”, “blue”, “white”, “black” };
4
5   for(int i = 1; i <= color.length; i++) {
6    System.out.println(color[i] + ” : “);
7   }
8  }
9 }

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

(答え):D

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

3行目では四つのString型要素を格納した配列を生成しています。添え字は0から始まります。

5~7行目で配列の要素を出力するfor文を定義しています。

5行目の先頭に定義したカウンタ変数iは1で初期化され、条件式はi<=color.lengthとなります。i++で一回のループごとに1ずつインクリメントされることを考えると、for文はカウンタ変数iが「1、2、3、4」の間ループすることになります。

6行目ではcolor[i]の定義でループごとにolor[1]の”blue”、color[2]の”white”、color[3]の”black”が出力されます。

しかし、四回目のループはcolor[4]の出力となり、配列に存在しない要素へのアクセスが発生し、実行時エラーとなります。(ArrayIndexOutOfBoundsExceptionの発生)

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


練習問題2
1 class ExForTest {
2  public static void main(String[ ] args) {
3   int[ ] num = new int[5];
4   num[0] = 0;
5   num[1] = 1;
6   for(int i : num) {
7    System.out.println(i + ” “);
8   }
9  }
10 }

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

(答え):B

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

3行目で要素が5個の配列numを生成しています。

各要素の値を初期化せずに配列を生成した場合は、初期値が代入された状態で生成されます。int型の配列の初期値は0です。

4行目、5行目でnum[0]とnum[1]にそれぞれ0と1を代入しています。

6行目の拡張for文では、変数iにnum[0]~num[4]の値を順番に代入して処理します。よって、7行目では、「0 1 0 0 0」と出力されます。

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


練習問題3
1 class ForTest {
2  public static void main(String[ ] args) {
3   for(int i = 0; i < 3; i++) {
4    switch(i) {
5     case 1:
6      System.out.println(1);
7     case 2 :
8      System.out.println(2);
9     case 3 :
10      System.out.print(3);
11    }
12   }
13  }
14 }

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

(答え):D

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

  3行目のfor文ではカウンタ変数iは0で初期化されているため、変数iが0、1、2の間、3回ループ処理を行います。

1回目のループでは、変数iが0のためswitch文の条件には一致しません。よって、何も出力されません。

2回目のループで、変数iは1になり、switch文のcase 1:に一致します。そのため6行目で1を出力し、break文がないため続けてcase 2:とcase 3:を実行し、「123」と出力します。

3回目のループでは、変数iは2になり、switch文のcase 2:に一致します。break文がないため続けてcase 3:を実行し、「23」と出力します。

4回目のループでは、変数iは3になり、ループの条件判定はfalseとなるため、ループは終了します。

実行結果は「12323」と出力されるため、選択肢Dが正解です。



 拡張for文は配列の全要素に対して繰り返し処理を行う場合に使用できます。for文を使用した場合と同じ処理を行うことができますが、拡張for文を使用するとより簡潔に記述することができます。
 拡張for文の構文は、以下の通りです。
for(変数宣言 : 配列名) {
   // 処理
}

 拡張for文は( )内の右辺で指定した配列の要素を、先頭から順に( )内の左辺で宣言した変数で受け取り、処理を実行します。
 for文は、繰り返し処理を行うために使用します。
 switch文は、式の結果とcase文をもとに多分岐処理を行います。



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

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

前の記事

N2必备词汇#0016

次の記事

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