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問題は、がであるIntegerか、であるかがわからずString、とを比較しStringたりInteger、その逆を行ったりすることができないことです。

1つの解決策は、検索したアイテムをメソッドにも渡すことです。これは次のようになります。

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

2つの間違いがあり、両方とも修正する必要があります。

1)次のように修正します。-if(e instanceof Integer && (Integer)e==30)確認する必要eがあります。これは、Integer

2) sは、次の方法Stringを使用して比較する必要があります。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 に答える