2016-09-15 1 views
0
public static int[] squeeze(int[] ints) { 
    int i; 
    int[] temp; 
    temp = new int[100]; 

    for (i = 0; i < ints.length; i++) { 
     if (ints[i] != ints[i + 1]) { 
     temp[i] = ints[i]; 
     } 
     else{ 
      while (ints[i] != ints[i + 1]) { 
       i++; 
      } 
      temp[i] = ints[i]; 
     } 
    } 

    return temp; 
} 

このコードを実行すると、arrayOutOfBoundExceptionが返されます。どのようなボディでもエラーを指摘できますか?私は基本的に配列内の2つの連続する数字が同じでないことを確認していて、同じ配列を印刷しますが、2つの連続したものが同じであれば次の数字のコピーで印刷します。java配列outofboundexception

ints[i + 1] 

が存在しないため

+0

ループ 'i chenchuk

+0

です。あなたはiith + 1 –

+0

でiをチェックしているので、配列のダンプを何か与えても、outofboundExceptionはなくなります。 – NewProgrammer7

答えて

1

とき

i == ints.length-1 

チェック

ints[i] != ints[i + 1] 

はエラーになります。

array.lengthは配列の要素の数を返しますが、配列のインデックスは0ではなく1から始まります。したがって、配列array[array.length]の要素は決して存在しないため、常に例外が発生します。