0

我正在对 String 进行二进制搜索,它显示输出错误。我不知道我错过了什么,我需要一些建议。

这是我的代码:

public static final int Not_Found = -1;

    public static int BS( String[][] record, String x )
{
int low = 0;
int high = record.length - 1;
int mid;

while( low <= high )
{
mid = ( low + high ) / 2;

if( record[ mid ].compareTo( x ) < 0 )
low = mid + 1;
else if( record[ mid ].compareTo( x ) > 0 )
high = mid - 1;
else
return mid;
}

return Not_Found;
    }

是我遗漏了什么吗?或者我必须使用其他方式找到它?

这里的错误:

错误:找不到符号 if(record[ mid ].compareTo( x ) < 0 ) ^ 符号:方法 compareTo(String)

错误:找不到符号 else if(record[ mid ].compareTo( x ) > 0 ) ^ 符号:方法 compareTo(String)

4

2 回答 2

1

Wellrecord是一个二维数组,所以record[j]会给出一个数组而不是字符串。您是否可能打算改用一维数组?

于 2012-04-26T00:20:53.263 回答
1

您正在使用“String[][]”表示 2D 记录。因此,record[j] 给出了对应的第 j 列字符串数组。这不能与字符串进行比较。因此,如果是 1d 记录,请使用“String[] 记录”。

于 2012-04-26T00:28:21.840 回答