2013-10-23 97 views
-1

我正在嘗試運行此代碼,並且我一直收到ArrayIndexOutOfBound異常錯誤。Java ArrayIndexOutOfBound異常

public class Heisenberg { 
public static void main(String[] args) { 
    int[] array1 = new int[5]; 
    int[] array2 = new int[5]; 

    Ext(-1, 10, array1, array2); 
    } 

public static void Ext(int q, int w, int[] e, int[] r) { 
    if (q >= 0) 
     e[q] = w; 
     r[q] = w; 
    } 
} 

我對數組有點不熟悉,所以對所有幫助表示讚賞。 enter code here

回答

7

您的問題是,如果沒有括號,在if適用以下語句:

if (q >= 0) 
    e[q] = w; 
    r[q] = w; // <---- here you get ArrayIndexOutOfBound Exception 

添加像括號:

if (q >= 0){ 
    e[q] = w; 
    r[q] = w; 
} 
1

將用於打開和關閉括號如果條件。

0

錯誤是在下面的行發生:

- [R [Q] = W;

由於這是出於if塊,q的值是-1這是導致錯誤。

移動成如果塊:

if (q >= 0){ 
    e[q] = w; 
    r[q] = w; 
} 

乾杯!!

0

您使用參數q調用方法Ext,其值爲-1。然後你訪問r[q] = w;,其中-1未定義(大小爲5的數組在索引0-4上定義)。

爲什麼你存在?

if (q >= 0) 
    e[q] = w; 
    r[q] = w; 

這意味着,如果語句是爲e[q] = w; 只有進行比較,如果你想擁有所有if語句,你需要加括號覆蓋的代碼。如果在if語句中沒有大括號,則只有第一個任務連接到該條件:

if (q >= 0){ 
    e[q] = w; 
    r[q] = w; 
}