3

ドキュメントには、「配列内のすべての要素が指定されたキーより小さい場合、Arrays.binarySearch は a.length を返す」と書かれています。したがって、次のプログラムでは、値 4 が出力されることを期待していますが、-4 が出力されます。なぜこの異常な動作をするのでしょうか?

import java.io.*;
import java.math.*;
import java.util.*;
import java.lang.*;

public class Main{ 
    public static void main(String[] args)throws java.lang.Exception{
        int[] a = new int[3];
        a[0] = 3;
        a[1] = 8;
        a[2] = 9;
        System.out.println(Arrays.binarySearch(a, 15));         
    }
}
4

2 に答える 2

8

Java Docsからの引用..

戻り値: 検索キーのインデックス (配列に含まれている場合)。それ以外の場合は (-(挿入ポイント) - 1)。

挿入ポイントの場所

キーが配列に挿入されるポイントとして定義: キーより大きい最初の要素のインデックス、または配列内のすべての要素が指定されたキーより小さい場合は a.length

あなたの例では、すべての要素は 未満15で、配列の長さは です3。したがって、挿入ポイントは3であるため、binarySearch は を返します-3-1 = -4

于 2013-10-13T06:28:27.067 に答える
0

If it's returning a negative value it's not found:

http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html

public static int binarySearch(Object[] a, Object key)

Returns: index of the search key, if it is contained in the array; otherwise, (-(insertion point) - 1). The insertion point is defined as the point at which the key would be inserted into the array: the index of the first element greater than the key, or a.length if all elements in the array are less than the specified key. Note that this guarantees that the return value will be >= 0 if and only if the key is found.

于 2013-10-13T06:32:15.693 に答える