1

我需要向这个泛型方法发送一个整数数组和一个字符串数组,并确定那里是否存在某个数字或字符串。我写了这段代码,但它在if(e==30)说“ Incompatible operand types E and int”的行上给出了一个错误。请帮忙。

public class Ch2Lu3Ex2
 {
   public static <E> void searchArray(E[] inputArray)
   {
    for(E e : inputArray)
     {
       if(e==30)
         {
          System.out.println("Element found in integer array");
         }
       else if(e=="raj")
         {
           System.out.println("Element found in string array");
         }

     }
  } 

 public static void main(String[] args)
  {
       Integer[] integerArray = {10,20,30};
       String[] stringArray = {"robin","raj","ravi"};
       searchArray(integerArray);
       searchArray(stringArray);
    }
  }
4

3 回答 3

3

问题是您不知道e是 anInteger还是 a String,并且您无法将 aString与 an进行比较Integer,反之亦然。

一种解决方案是将寻找的项目也传递给您的方法 - 它可能如下所示:

public static <E> void searchArray(E[] inputArray, E soughtItem) {
    for (E e : inputArray) {
        if (e.equals(soughtItem)) {
            System.out.println("Element found in integer array");
        }
    }
}

在您的主要代码中:

searchArray(integerArray, 30);
searchArray(stringArray, "raj");

另请注意,您应该使用equals而不是==进行相等测试。

最后,所有这些都已经被其他人写了:

Set<String> set = new HashSet<String> (stringArray);
if (set.contains("raj")) System.out.println("Found raj");
于 2013-01-10T11:49:41.470 回答
1

有两个错误,都必须改正:

1)像这样修复它:if(e instanceof Integer && (Integer)e==30)- 你必须检查,这e是一个实例Integer

2) Strings 必须使用equals方法进行比较:

else if(e.equals("raj"))

于 2013-01-10T11:51:20.420 回答
1

比较对象时不要使用“==”!更改为“equals()”方法,应该可以工作!

public class Ch2Lu3Ex2
 {
   public static <E> void searchArray(E[] inputArray)
   {
    for(E e : inputArray)
     {
       if(e.equals(30))
         {
          System.out.println("Element found in integer array");
         }
       else if("raj".equals(e)) //This way no null pointer will occure
         {
           System.out.println("Element found in string array");
         }

     }
  } 

 public static void main(String[] args)
  {
       Integer[] integerArray = {10,20,30};
       String[] stringArray = {"robin","raj","ravi"};
       searchArray(integerArray);
       searchArray(stringArray);
    }
  }
于 2013-01-10T11:52:28.610 回答