DEV Community

TANIAOKA, Akihiro
TANIAOKA, Akihiro

Posted on

9章15

このJavaコードは、2つの文字列配列 ab の要素が一致するかどうかをチェックしています。Arrays.mismatchメソッドは2つの配列を比較し、最初に一致しない要素のインデックスを返します。もしすべての要素が一致していれば -1 を返します。

配列 a{"b", "c"} を要素として持ち、配列 b{"a", "b", "c"} を要素として持ちます。これらの配列を比較すると、最初の要素 a[0]"b" で、b[0]"a" です。したがって、最初の不一致はインデックス 0 の位置で発生します。

コードのコメントを加えて、各行が何をしているのかを説明しましょう。

import java.util.Arrays; // Arraysクラスをインポート

public class Main {
    public static void main(String[] args) {
        String[] a = {"b", "c"}; // 配列aを初期化
        String[] b = {"a", "b", "c"}; // 配列bを初期化
        // 配列aと配列bを比較し、最初の不一致の位置(インデックス)を出力
        System.out.println(Arrays.mismatch(a, b)); 
    }
}
Enter fullscreen mode Exit fullscreen mode

結果は 0 が出力されるため、選択肢Dが正解です。これは、最初の不一致が配列の0番目の要素で発生していることを意味します。

追記

Arrays.mismatch 関数は、2つの配列を最初から順番に要素ごとに比較していきます。この関数は最初に見つけた不一致の要素のインデックスを返します。もし2つの配列の要素が全て一致している場合、不一致の要素が存在しないので、不一致のインデックスは存在せず、そのため関数は -1 を返します。これは慣例的な方法で、不一致がないこと、すなわち全てが一致していることを示すための特別な値として使われます。

例えば:

String[] x = {"a", "b", "c"};
String[] y = {"a", "b", "c"};
System.out.println(Arrays.mismatch(x, y)); // すべて一致するので -1 を出力します。
Enter fullscreen mode Exit fullscreen mode

この場合、xy の配列は全ての位置で同じ値を持っているので、Arrays.mismatch 関数は -1 を返します。

一方で、異なる要素が存在する場合:

String[] a = {"b", "c"};
String[] b = {"a", "b", "c"};
System.out.println(Arrays.mismatch(a, b)); // 最初の不一致はインデックス0なので 0 を出力します。
Enter fullscreen mode Exit fullscreen mode

ここでは、配列 a の最初の要素は "b" ですが、配列 b の最初の要素は "a" なので、最初の不一致はインデックス 0 で発生し、そのため関数は 0 を返します。

Top comments (0)