编码时出现此错误。任何人都可以向我解释为什么它不适用以及如何解决它。非常感谢提前!
错误: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));
}
}
答案 0 :(得分:4)
原因是int
是一种原始类型,它在java中具有特定的角色,因此您无法将int[]
强制转换为T[]
。您可以使用Integer[]
而不是使用基元类型,它应该可以正常工作。因此,您应该将createSequence
方法更改为
public static Integer[] createSequence(int n) {
Integer[] a = new Integer[n];
for (int i = 0; i < a.length; i++) {
a[i] = i + 1;
}
return a;
}
答案 1 :(得分:0)
linSearch (T[] a, T x)
需要一个T
数组,但您尝试传递int
数组。数组int[]
的类型与数组T[]
的类型不同。
要做到这一点,可以尝试改变:
linSearch (T x, T... a) // vararg of generic T
然后致电:
linSearch(x, createSequence(n)) // passing int[] to T...