我需要向这个泛型方法发送一个整数数组和一个字符串数组,并查明是否存在某个数字或字符串。我写了这段代码,但它在行{{1}上给出错误}说“if(e==30)
”。请帮忙。
Incompatible operand types E and int
答案 0 :(得分:3)
问题在于您不知道e
是Integer
还是String
,而您无法将String
与{{1}进行比较反之亦然。
一种解决方案是将所需的项目传递给您的方法 - 它可能如下所示:
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
进行相等测试。
最后,所有这些都是由其他人写的:
==
答案 1 :(得分:1)
有两个错误,必须修复它们:
1)修复它:if(e instanceof Integer && (Integer)e==30)
- 您必须检查e
是Integer
的实例
2)String
必须使用equals
方法进行比较:
else if(e.equals("raj"))
答案 2 :(得分: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);
}
}