2014-03-28 35 views
1

嗨我显然还在尝试学习Java并且无法在网站上找到答案。int binarySearch arrayList

基本上即时通讯应该添加一个名为的binarySearch

新的私有的,通用的方法,该方法应该执行递归二进制搜索算法,它看起来已经成为那些在姓氏字段中的值相同值的元素传入searchLastName方法参数。

不过,我觉得我有些正确的,但我在这两个不用彷徨的得到一个错误(错误:无法找到符号)

private static < E extends People > int binarySearch(ArrayList<E> list, int first, int  last, String searchLastName) 
{ 
    int middle; 


if(first > last) 
    return -1; 

middle = (first + last) /2; 

if (list.get.compareTo(searchLastName)) 
{ 
    return middle; 
} 
else if (list.get.compareTo(searchLastName) > last) 
{ 
    return binarySearch(list, middle + 1, last, searchLastName); 
} 

else return binarySearch(list, first, middle - 1, searchLastName); 
+0

什么是'get'意思是?你正在使用正确的语法来实现你想要实现的目标吗? –

+0

'get()'是一种方法,所以确保你使用'()'也传递它需要的参数 –

+0

我应该调用递归方法并传递数组列表并传递姓氏 – user3347866

回答

0

在仰视ArrayList文档,可以很容易地这个类别不包含任何这样的字段,称为get。编译器将此字段解释为它找不到的符号。为了纠正你的代码使用正确的方法签名

... 
if (list.get (someIndex).compareTo (searchLastName)) 
... 

的一些指标,你要访问的元素的索引。我不是要注意的是something是一个字段和something()是一种方法。

我相信你有阵列的一些经验primitive datatypes。你还记得如何从数组中获取元素吗?

int a = someArray [someNumber]; // 0 <= someNumber < someArray.length 

ArrayList#get()方法以类似的方式工作。

+0

谢谢出来了! – user3347866

+0

@ user3347866如果有效,请不要忘记接受答案! :-) – Astrobleme