2011-12-17 58 views
-2

不要以为有什么好说的,这是我的代码爪哇 - 我设定在0开始,I <arraylist.size(),我++ ......走出界失误

for (int i = 0; i < numFactors.size(); i++) { 
    for (int j = 0; i < denFactors.size(); j++) { 
     if (numFactors.get(i) == denFactors.get(j)) { 
      commonFactors.add(numFactors.get(i)); 
     } 
    } 
} 

我得到这个错误

Exception in thread "Thread-4" java.lang.IndexOutOfBoundsException: Index: 4, Size: 4 
    at java.util.ArrayList.RangeCheck(Unknown Source) 
    at java.util.ArrayList.get(Unknown Source) 
    at com.creatif.cubes.Fraction.simplify(Fraction.java:64) 

其中第64行是在if语句。我不能在这里找到问题。

回答

2

你内心的循环记载:

for (int j = 0; i < denFactors.size(); j++) 

达到denFactors.size(),因此索引越界异常之前,目前尚不清楚的是j将停止递增。你的意思是:

for (int j = 0; j < denFactors.size(); j++) 
+0

非常感谢 – Raekye 2011-12-17 23:18:32

5

此行

for (int j = 0; i < denFactors.size(); j++) { 

应该

for (int j = 0; j < denFactors.size(); j++) { 

我相信。

- 此外,您可能还想调用for以外的所有.size()。您呼叫每次循环运行时间:)

+0

甚至更​​好地使用for-each而不是for。 – soulcheck 2011-12-17 22:10:55