1

我正在开发一个分数计算器,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]存在。

4

2 回答 2

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...

于 2012-10-20T21:28:21.720 回答
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);         
    }
于 2012-10-20T21:39:53.450 回答