获取IndexOf方法 - 二进制搜索

时间:2013-12-03 01:48:21

标签: java arrays algorithm sorting binary-search

帮助比较names1[middle].compareTo (value)行。我收到编译错误:

1 error found:
compareTo(java.lang.String) in java.lang.String cannot be applied to (int) 

这是我的代码

public int indexOf(String word)
{

    public int getIndex(String [] names1, int value)   
    {     
        int bottom = 0; 
        int top = names1.length-1;
        int middle;
        boolean found = false;
        int location = -1;

        while (bottom <= top&& !found)     
        {      
            middle = (bottom + top) / 2;            
            if (names1[middle].equals (value))       
            {     
                found = true;
                location = middle;
            }      
            else if (names1[middle].compareTo (value))  
            {   
                bottom = middle +1;   
            }       
            else       
            {       
                top = middle -1;    
            }    
            return location;  
        }    

    } 

1 个答案:

答案 0 :(得分:0)

由于names1String[]names1[middle]String。另一方面,value参数是int。由于您无法使用String#compareToStringint进行比较,因此导致编译错误。要解决此问题,您可能需要更改参数类型。

此外,即使您进行此更改,我也不相信您的if声明是合法的。 compareTo会返回一个int,表示这些值之间的关系,而不是boolean表示它们是否相等。您需要更新此声明以将其考虑在内。

希望这有帮助!