2017-11-23 13 views
-3

は私が仕事に以下のコードまたは類似した何かを作るしようとしています:どのようにオブジェクトを配列から取り出し、instanceofを使用しますか?

static String[][] arr = new String[4][4]; 
static int[][] arr2 = new int[4][4]; 



for(int i = 0; i < arr.length; i++){ 
     for (int j = 0; j < arr[0].length; j++) { 
      arr[i][j] = "1"; 
      arr2[i][j] = Integer.parseInt(arr[i][j]); 
      if(arr2[i][j] instanceof int){ 
       System.out.println("Works"); 
      } 
     } 
    } 

代わりにIDEが、それは赤とエラー与えマーク「Inconvertible種類; intへint型にキャストすることはできません」。

誰かが助けることができますか?

+0

intは[] – Artemis

+0

int型されていない配列は、2Dのint型の配列として宣言するので、あなたがチェックします任意のインデックスがint型であるが、さらに 'instanceof'は動作しません。プリミティブ型。参照してください:https://stackoverflow.com/questions/12361492/how-to-determine-the-primitive-type-of-a-primitive-variable *本当に*チェックしたいのですか? – alfasin

+0

char、int、booleanのような単純な古い値型に対しても 'instanceof'を使うことができますか? – selbie

答えて

-1

あなたが提供した情報は限られています。 instanceofはプリミティブ型をチェックできないので、intと書かれている場所をすべてIntegerに変更する必要があります。あなたのコードは次のようになります。

static String[][] arr = new String[4][4]; 
static Integer[][] arr2 = new Integer[4][4]; 


for(int i = 0; i < arr.length; i++){ 
     for (int j = 0; j < arr[0].length; j++) { 
      arr[i][j] = "1"; 
      arr2[i][j] = Integer.parseInt(arr[i][j]); 
      if(arr2[i][j] instanceof Integer){ 
       System.out.println("Works"); 
      } 
     } 
    } 
+0

Integer.parseIntが動作したかどうかは、いつでも知ることができます。なぜなら、そうでなければ例外をスローするからです。 –

+0

これは全く無意味です。なぜOPに明らかに間違ったことを教えるのですか? – shmosel

関連する問題