2016-01-07 133 views
-18

我不斷收到越界錯誤。我想檢查重複。還有在此之後多,但現在所有這就是重要的是說,我得到一個OutOfBoundsExceptionArrayList,指標:1種尺寸:1Java超出界限錯誤

ArrayList lottery = new ArrayList(); 

for (int n = 0; n < 4;) { 
    int number = 0; 
    int first = 0; 
    int value = 0; 
    boolean found = false; 
    first = (int) (Math.random() * 42 + 1); 
    lottery.add(first); 
    count[first]++; 

    for (int i = 1; i < 6;) { 
     number = (int) (Math.random() * 42 + 1); 

     for (int k = 0; k < 6;) { 
      // here value = lottery.get(k); 
      if (value == number) { 
       found = true; 

      } else { 
       found = false; 
      } 

      if (found == true) { 
       number = (int) (Math.random() * 42 + 1); 

      } else { 
       k++; 

      } 

     } 
     System.out.println("number " + (i + 1) + ": " + number); 
     if (found == false) { 
      lottery.add(number); 
      count[number]++; 
      i++; 

     } 

    } 
} 
+2

這很清楚。 *它說Array列表是索引:1大小:1 * – Atri

+0

n永遠不會增加,循環的頂部永遠不會完成 – Spooky

+0

它在代碼中稍後執行。 k從1開始,我忘了改變它。 –

回答

0

我以爲count是要在陣列檢查 2錯誤我注意到 值參數沒有改變,因此將永遠留=0 並在此代碼

number = (int) (Math.random() * 42 + 1); 
if (value == number) { 
     found = true; 

數量永遠不會等於零 所以

if (found == false) { 
    lottery.add(number); 
    count[number]++; 
    i++; 
} 

就一定會執行 並增加彩票新的元素總是會在每個循環 發生兩次並沒有n++ 所以basicaly你的循環將永遠不會結束 ,並通過這個代碼

first = (int) (Math.random() * 42 + 1); 

你確定計數長度正好是42,因爲如果它少了,會導致IndexOutOfBoundsException ,如果超過42你沒有檢查其中的所有元素:) 希望幫助

0

它看起來對我來說,你沒有辦法讓你的循環結束。你沒有任何可以讓循環增加的東西,比如i ++。也許這可以解決你面臨的問題。

+0

也許你應該仔細觀察,因爲它們都是'i ++'和'k ++'。 – Tom