2017-03-04 20 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