2016-04-08 35 views
1

嗨,大家好,請有人告訴我這是什麼意思?我正在寫一個程序保齡球的遊戲,我的程序沒有錯誤編譯,但是當我運行它時,這部分代碼被高亮顯示與錯誤:java.lang.ArrayIndexOutOfBoundsException:-1數組越界異常保齡球示例

這裏是我的代碼:

if(rolls[i]+rolls[i+1] == 10) { 
    total = rolls[i]+rolls[i+1]; 
    isSpare = true; 
} 

編輯:這裏是整個for循環:

for (int i = 0; i < rolls.length; i += 2) { 
    isStrike = false; 
    isSpare = false; 
    lastFrame = false; 
    if (i == rolls.length - 3) { 
     System.out.println("FINAL FRAME"); 
     lastFrame = true; 
     total = rolls[i] + rolls[i + 1] + rolls[i + 2]; 
     frame[0] = rolls[i]; 
     frame[1] = rolls[i + 1]; 
     frame[2] = rolls[i + 2]; 
    } 
    if (rolls[i] == 10) { 
     total = rolls[i]; 
     frame[0] = rolls[i]; 
     isStrike = true; 
     i -= 1; 
    } else { 
     total = rolls[i] + rolls[i + 1]; 
     frame[0] = rolls[i]; 
     frame[1] = rolls[i + 1]; 
    } 
    if (rolls[i] + rolls[i + 1] == 10) { 
     total = rolls[i] + rolls[i + 1]; 
     isSpare = true; 
    } 
    runningTotal = runningTotal + total; 
    printFrame(frame, isStrike, isSpare, lastFrame, frames, runningTotal); 
    frames++; 
} //increment 

System.out.println(); 
} 
+0

代碼不足。告訴我們你的循環。 – Borna

+0

這個IF條件的外部循環是什麼? – Danda

+0

我猜這是在一個for循環內,這就是「我」來自像(for int i = 0; i

回答

-2

試圖讓rolls[i+1]假設在那一刻的價值,當它失敗的「i」等於陣列上的元素的最大數量。

+1

這不是有效答案!謹防downvotes –

+0

'卷[i + 1]'不大可能發生索引'-1'。 –

+0

我剛剛編輯完整個循環 – CH26

0

看起來「我」初始化爲-1,因此您試圖訪問陣列上的無效插槽。

+0

我認爲它被初始化爲-1,因爲首先評估了卷[i] –

+0

感謝您的評論,我剛剛包含在整個循環中 – CH26

1
if(rolls[i]==10){ 
    total=rolls[i]; 
    frame[0]=rolls[i]; 
    isStrike=true; 
    i-=1; 
} 

在第一次迭代中,如果roll [0]碰巧是10,那麼您將i減1使其爲-1。接下來的if語句會拋出一個異常。

0

這段代碼似乎有一些錯誤。首先,讓我有點重申@Thomas說,加入到它,

if (rolls[i] == 10) { 
    total = rolls[i]; 
    frame[0] = rolls[i]; 
    isStrike = true; 
    i -= 1; 
} 

說,rolls[0] = 10; i設置爲-1。在下面的塊,

if (rolls[i] + rolls[i + 1] == 10) { 
    total = rolls[i] + rolls[i + 1]; 
    isSpare = true; 
} 

您試圖訪問rolls[-1]rolls[0]。因此,這個問題。其次,我不知道這是否是你邏輯中的一個缺陷,但我想我應該指出這一點。 i -= 1;將使i減少1.在循環的下一次迭代中,i++發生在之前進入循環體。所以,你本質上是在同一個索引處卡住了,我不明白你爲什麼要這麼做。

第三,試圖在循環中訪問i+1,直到數組的最後一個元素將導致最後一個索引處出現ArrayIndexOutOfBoundsException

+0

感謝您的評論,我仍然不確定我是如何'm應該糾正ArrayIndexOutOfBoundsException – CH26

+0

@ CH26你能否告訴我你的整個計劃?一旦我更好地瞭解目標是什麼,我會更好地提出修復建議。 –