繁体   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