程序运行时可以打印的所有可能值是什么?
import java.util.*;
public class TestClass {
static String[] sa = { "a", "aa", "aaa", "aaaa" };
static { Arrays.sort(sa); }
public static void main(String[] args) {
String search = "";
if(args.length != 0) search = args[0];
System.out.println(Arrays.binarySearch(sa, search));
}
}
正确答案是从-5到3的任意数字。
我仍然不明白正确的答案。
有三种可能性。
1)如果数组中的所有元素都小于搜索键,则插入点为4,因此返回-5。
2)如果数组中的所有元素都大于搜索键,则插入点为0,因此返回-1。
3)如果数组中的任何元素与搜索键匹配,则返回的值应介于-5和-1之间。
那么如何返回从0到3的值?
答案 0 :(得分:2)
那么如何返回从0到3的值?
如果search = "aaaa"
输出为3
,那么这就是方法binarySearch
返回的位置(索引)。如果出现类似情况:
search = "aaa"
,输出为2
search = "aa"
,输出为1
search = "a"
,输出为0
要理解这一点,请尝试打印数组sa
:
System.out.println(sa[0]); // index 0
System.out.println(sa[1]); // index 1
System.out.println(sa[2]); // index 2
System.out.println(sa[3]); // index 3
<强>输出:强>
a
aa
aaa
aaaa
答案 1 :(得分:0)
来自javadoc
返回搜索键的索引(如果它包含在数组中);除此以外, ( - (插入点) - 1)。插入点定义为点 密钥将插入到数组中:索引 第一个元素大于键,或者a.length如果所有元素都在 array小于指定的键。
您有一个大小为4的数组。因此该元素可以位于索引0,1,2或3中。
其他可能性是你的第1点和第2点。