簡體   English   中英

Java SE 7 Arrays.binarySearch()

[英]Java SE 7 Arrays.binarySearch()

程序運行時可以打印的所有可能值是什么?

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

來自javadoc

返回搜索鍵的索引(如果它包含在數組中); 否則,( - (插入點) - 1)。 插入點定義為鍵將插入到數組中的點:第一個元素的索引大於鍵,或者如果數組中的所有元素都小於指定鍵,則為a.length。

您有一個大小為4的數組。因此該元素可以位於索引0,1,2或3。

其他可能性是你的第1點和第2點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM