【问题标题】:Inverting an array using generic method using Swapping technique使用交换技术使用通用方法反转数组
【发布时间】:2018-07-06 16:43:04
【问题描述】:

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


     }

}

【问题讨论】:

  • intarrayint[],而不是 E[]。您可能打算改用inputArray。投票结束与您的问题无关的问题归结为拼写错误,因此不太可能对未来的访问者有用。
  • @JoeC 你是对的,但是 intarray 是一个Integer[],而不是int[],所以它可能会以一种令人困惑的方式出现。 inverse 方法不应引用变量 intarray 而是 inputArray
  • 不是“逆”、“逆”、“横”,也不是“转置”。它被称为“反向”。

标签: java arrays generics inverse


【解决方案1】:

您在反函数中使用 intarray 而不是 inputArray,因此编译器知道它是 Integer 类型,需要转换为 E 类型。您只需将 intarray 替换为 inputArray 即可使代码正常工作。正确的代码将是-`

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



 }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多