程序在运行时可以打印哪些可能的值?

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到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

关于java - Java SE 7 Arrays.binarySearch(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21493394/

10-10 08:02