簡體   English   中英

Java數組索引超出范圍異常處理

[英]Java Array Index Out of Bounds Exception Processing

給出以下Java代碼:

int test = createIntData(Column[8]);

private int createIntData (String realData) {
    if (realData == null) {
        return (int) (Math.random()*100); 
    }
    else {
        return Integer.parseInt(realData);
    }
}

這會拋出這樣的異常:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException

這是因為參數只有最大索引4.然后如何更改程序以實現以下功能:一旦參數超出索引,返回值:

Math.random() * 100

如果8超出了Column的長度范圍,則會出現該錯誤。 改變這個

int test = createIntData(Column[8]);

到(使用三元

int test = createIntData((8 < Column.length) ? Column[8] : null);

有兩個嚴重的問題:

1.您應該檢查給定的數組索引是否存在:

Column[] array = new Column[someCapacity];
//fill the array

int i = 8;

if( i < array.length && i > -1 ){
    int test = createIntData(array[i]);
}

2.數組的類型( Column )與createIntData()輸入參數( String )不匹配

我會通過傳遞數組和索引來允許在方法內部進行檢查:

public int createIntData(String[] values, int index) {
    if (values != null && index >= 0 && index < values.length) {
        return Integer.parseInt(values[index]);
    }
    return (int) (Math.random()*100);
}

稱它為:

int test = createIntData(Column, 8);

這樣可以安全地使用任何輸入調用該方法(盡管我在parseInt中留下了潛在的異常)

暫無
暫無

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

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