簡體   English   中英

使數組索引超出界限錯誤

[英]Getting Array Index Out of Bounds Error

由於某種原因,我收到此錯誤。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at Assignment25.main(Assignment25.java:80)

public static void main (String[] args){
long[] array = new long[7];
for (int i = 0; i < 6; i++){
    int thefib = 39;
    array[i] = fib(thefib);
    thefib++;
}

int counter = 0;
int counter1 = 1;
for(int i = 0; i < 6; i++){
    long start = System.currentTimeMillis();
    gcd(array[counter], array[counter1]);
    long end = System.currentTimeMillis();
    long time = end - start;
    System.out.println("GCD time for " + (counter + 39) + " and " + (counter1 + 
        39) + " is " + time);
    counter++;
    counter1++;
}

counter = 0;
counter = 1;
for(int i = 0; i < 6; i++){
    long start1 = System.currentTimeMillis();
    gcd2(array[counter], array[counter1]);
    long end1 = System.currentTimeMillis();
    long time1 = end1 - start1;
    System.out.println("GCD2 time for " + (counter + 39) + " and " + (counter1 + 
        39) + " is " + time1);
    counter++;
    counter1++;
    }
}

}

由於你從1開始你的counter16次迭代的for循環,所以在最后一次迭代中counter1變為7,這給出了ArrayIndexOutOfBoundsException 因為你的尺寸array是7和你想訪問索引7使用array[counter1]counter1變為7。

數組中的最大可訪問索引始終是array.length - 1 ,在您的情況下, array[6]array[6]的最后一個可訪問索引。

counter1初始值為1並且i=6counter1值為7 但是沒有數組的索引。

數組是為大小7定義的,迭代只進行了6次...所以例外

當你遞增countercounter1 ,你將counter1設置為counter1 ,使其完全為counter+1 counterarray.length-1你的counter1等於array.length ,即7

因為你打算計算兩個相鄰整數的gcd,為什么不直接使用i本身:

for(int i = 0; i < array.length -1 ; i++){ // <<---- array.length-1 = 6, i guess
    long start1 = System.currentTimeMillis();
    gcd2(array[i], array[i+1]);
    // other code

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM