【Java SE17 Silver 模擬試験】B-35

Java SE17 Silver 模擬試験
Java SE17 Silver 模擬試験

問題

次のコードをコンパイルし、次のコマンドを実行するとどうなりますか。

public class Main {
	public static void main(String... args) {
		final Integer[] numbers = { 1, 4, 2, 7, 1, 2, 1 };
		int element = Integer.parseInt(args[0]);
		BaseType c = new MyClass();
		if (c.isContain(numbers, element))
			System.out.println("The array contains: " + element);
		else
			System.out.println("The array done not contain: " + element);
	}
}

interface BaseType {
	boolean isContain(Integer[] numbers, int element);
}

interface MyType extends BaseType {
	public default boolean isContain(Integer[] numbers, int element) {
		int count = 0;
		for (int i : numbers) {
			if (i == element)
				++count;
		}
		return count > 0;
	}
}

class MyClass implements MyType {
}

コマンド

$ java Main 3 1

選択肢

A)ClassCastException がスローされる

B)The array done not contain: 3 The array contains: 1 がスローされる

C)コンパイルエラーになる

D)The array done not contain: がスローされる

E)The array done not contain: 3 がスローされる

F)ArrayIndexOutOfBoundsException がスローされる

G)The array contains: 1 がスローされる

解答

A)ClassCastException がスローされる

B)The array done not contain: 3 The array contains: 1 がスローされる

C)コンパイルエラーになる

D)The array done not contain: がスローされる

E)The array done not contain: 3 がスローされる

F)ArrayIndexOutOfBoundsException がスローされる

G)The array contains: 1 がスローされる

解説

このコードをコンパイルして、指定されたコマンドを実行するとどうなるかを解説します。

コードの説明

  1. 引数の取得: args[0] から element を取得します。コマンドライン引数として 3 を渡すため、element3 になります。
  2. クラスのインスタンス化: BaseType インターフェースを実装した MyClass のインスタンス c を作成します。
  3. isContain メソッドの呼び出し:
    • c.isContain(numbers, element) が呼ばれます。
    • MyType インターフェースのデフォルトメソッドが呼ばれるので、numbers 配列をループして element(3)を探します。

ループの処理

  • numbers 配列は { 1, 4, 2, 7, 1, 2, 1 } です。
  • element3 ですが、配列には 3 は含まれていません。
  • したがって、カウントは 0 になり、count > 0 の条件は満たされません。

結果

  • isContain メソッドは false を返します。
  • else 節が実行され、"The array done not contain: " + element が出力されます

前の問題へ SE17_B-34

次の問題へ SE17_B-36

対象資格:Java SE17 認定資格