的ArrayIndexOutOfBounds

时间:2012-10-20 21:26:30

标签: java arrays string split fractions

我正在使用String.split()处理分数计算器以获得分割的术语。输入用空格(1/2 / 1/2)

分隔
String[] toReturn = new String[6];
result = isInputValid(expression);

toReturn = splitExpression(expression, placeToSplit[0]);
int indexOfUnderscore = toReturn[0].indexOf("_");
result = isInputValid(toReturn[0]);

if(toReturn[5] != null){
    getOperator2(toReturn);
}

错误发生在if语句中。 toReturn[5]超出范围,因为当回答两个或更少的术语时,使用String.split()将其拆分为空格的分割表达式不会创建toReturn[5],即使我设置了值到toReturn[5]。如果有一种方法可以判断数组中的某个字段是否存在,那么可以解决它,或者是否有办法说明有多少项被放入。我的程序适用于1/2 + 1/2 * 1/2,但我没有'我想出了如何判断toReturn[5]是否存在。

2 个答案:

答案 0 :(得分:5)

正确:

result = isInputValid(expression);

String[] toReturn = splitExpression(expression, placeToSplit[0]);
int indexOfUnderscore = toReturn[0].indexOf("_");
result = isInputValid(toReturn[0]);

if(toReturn.length>5 && !"".equals(toReturn[5]) ){
    getOperator2(toReturn);
}

toReturn.length>5部分验证数组本身至少有6个项目。然后,您可以检查该元素是否为empty ...

答案 1 :(得分:0)

这就应该是这样的。 删除第一行String[] toReturn = new String[6];

更新你的第三行,

String[] toReturn = splitExpression(expression, placeToSplit[0]); 

并检查这个条件:

if(toReturn.length>5 ){ // use !toReturn[5].isEmpty()  to check the empty string
    getOperator2(toReturn);         
    }