2011-12-17 10 views
-2

から抜け出す、ここに私のコードはJavaの - 私は0で起動するように設定さは、私は<(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

あなたの内側のループを求めている読み:それは、境界例外のうちので、インデックスをdenFactors.size()到達する前に

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

それはjがインクリメント停止することは明らかではありません。あなたはどういう意味ですか:

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

ありがとう – Raekye

5

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

この行は、私は信じてい

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

でなければなりません。

- forの外にある.size()もすべて電話したいと思うかもしれません。あなたはそれのループを実行するたび:)

+0

の代わりにそれぞれを使用することをお勧めします。 – soulcheck