我试图在O(n)时间复杂度中使用泛型方法反转数组。但是它显示了E和整数的不兼容类型的错误?任何人都可以纠正吗? 下面是我的代码:
public class HelloWorld{
static Integer intarray[]={0,1,2,3,5,6};
public static <E> void inverse(E inputArray[])
{
int i,low=0,hi=intarray.length-1;
while(low<hi)
{
E temp=intarray[low];
intarray[low]=intarray[hi];
intarray[hi]=temp ;
low++;hi--;
}
}
public static < E > void printArray( E[] inputArray )
{
for(E element : inputArray) {
System.out.printf("%s ", element);
}
System.out.println();
}
public static void main(String []args)
{
//System.out.println("Hello World");
printArray(intarray);
inverse(intarray);
}
}
答案 0 :(得分:1)
你在反函数中使用intarray而不是inputArray,因此编译器得到它的Integer类型并且需要被类型化为E类型。您只需要使用inputArray替换intarray以使代码正常工作。正确的代码是-`
public class HelloWorld{
static Integer intarray[]={0,1,2,3,5,6};
public static <E> void inverse(E inputArray[])
{
int i,low=0,hi=inputArray.length-1;
E temp;
while(low<hi)
{
temp= inputArray[low];
inputArray[low]=inputArray[hi];
inputArray[hi]= temp ;
low++;hi--;
}
}
public static < E > void printArray( E[] inputArray )
{
for(E element : inputArray) {
System.out.printf("%s ", element);
}
System.out.println();
}
public static void main(String []args)
{
//System.out.println("Hello World");
inverse(intarray);
printArray(intarray);
}
}