2017-03-04 9 views
0

1つの配列と入れ子のforループを使用して繰り返し要素をチェックし、0にする作業をしていましたが、私はIndexBoundの問題があり、繰り返し要素をチェックする1つの配列のスニペット

助けが必要ですか?

int data[] = new int[20]; 
    for(int i = 0; i < data.length; i++) { 
     data[i] = in.nextInt(); 
    } 
    for (int i = 0; i < 18; i++) { 
     for (int x = i + 1; x < 20; i++) { 
      if (data[i] == data[x]) { 
       data[x] = 0; 
      } 
     } 
    } 


Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 20 
at Arrays.Prog415h.main(Prog415h.java:47) 
if (data[i] == data[x]) { 
+0

は「in」スキャナですか? – UnknowableIneffable

+0

@UnknowableIneffibleはい – Asker123

答えて

2

ここで、forループネストさの増分はi代わりにxあります。つまり、iは、外側ループと内側ループの両方ですべての繰り返しに対して配列境界をオーバーランしています。問題を解決するには、

for (int x = i + 1; x < 20; x++) 
+0

これは私のためにちょうどタイプミスでした。 – Asker123

関連する問題