Bra*_*ley 0 java arrays indexof
我正在尝试使用数组和array.BinarySearch函数验证密码和用户名.数组中的前两个用户名:bradley和john使用函数0和1返回正确的位置.但是当我尝试验证数组jim和clarke中的最后两个字符串时,binarySearch函数返回的用户名位于数组中的位置-2两次导致验证失败.有任何想法吗?
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])
{
}
Run Code Online (Sandbox Code Playgroud)
您的names数组未排序:
String[] names = {"bradley","john","jim","clarke"};
Run Code Online (Sandbox Code Playgroud)
这是binarySearch()(和二进制搜索算法)的要求:
范围必须按升序排序
先排序它,它会像魅力一样工作:
String[] names = {"bradley","clarke","jim","john"};
Run Code Online (Sandbox Code Playgroud)