Array.binarySearch返回错误的数据

我正在尝试使用数组和array.BinarySearch函数validation密码和用户名。 数组中的前两个用户名:bradley和john使用函数0和1返回正确的位置。但是当我尝试validation数组jim和clarke中的最后两个字符串时,binarySearch函数返回的用户名位于数组中的位置-2两次导致validation失败。 有任何想法吗?

String[] names = {"bradley","john","jim","clarke"}; String[] passwords = {"password","password","test","test"}; int pos = Arrays.binarySearch(names, uname); System.out.println("Found you in array:" + uname + "here:" + pos); if(pos >= 0) { System.out.println("Validation password for:" + uname); if(passwords[pos].equals(pword) && !loggedOn[pos]) { } 

您的names数组未排序:

 String[] names = {"bradley","john","jim","clarke"}; 

这是binarySearch()的要求binarySearch()一般是二进制搜索算法 ):

范围必须按升序排序

先排序它,它会像魅力一样工作:

 String[] names = {"bradley","clarke","jim","john"}; 

二进制搜索需要事先对数组进行排序。 您可以按顺序列出名称,也可以自己执行排序。 您可以使用Arrays.sort(names)对名称数组进行排序。