使用Swapping技术使用泛型方法反转数组

时间:2018-01-27 14:14:03

标签: java arrays generics inverse

我试图在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);


     }

}

1 个答案:

答案 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);



 }

}