【发布时间】:2018-04-20 14:22:29
【问题描述】:
我在编码时收到此错误。谁能向我解释为什么它不适用以及如何解决它。提前非常感谢!
错误:SearchTools12 类型中的方法 linSearch(T[], T) 不是 适用于参数 (int[], int)
import java.util.NoSuchElementException;
public class SearchTools12 {
public static int[] createSequence(int n){
int[] a= new int[n];
for (int i=0; i<a.length; i++){
a[i]=i+1;
}
return a;
}
public static <T> int linSearch (T[] a, T x){
int i = 0;
while (i < a.length){
if (x == a[i]) return i;
i += 1;
}
throw new NoSuchElementException();
}
public static void main(String[] args){
int n=30;
int x=15;
System.out.println(linSearch(createSequence(n), x));
}
}
【问题讨论】:
-
我没有 JDK 来进行测试,但我认为调用您的方法的正确语法是 linSearch
(createSequence(n), x)。您的方法被声明为泛型,您必须在调用它时精确关联类型 -
警告:
x == a[i]对于大多数不是枚举类型的类型将失败。在 Java 中,==比较引用,这意味着只有当操作数是完全相同的对象时,它才会评估为真,而不是检查等价。 -
顺便说一句,
linSearch没有理由是通用的——public static int linSearch (Object[] a, Object x)的声明将接受完全相同的可能参数,并以相同的方式工作