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]2 つ以下の用語が回答された場合、スペースで分割するために使用される分割式は、値を に設定しても をString.split()作成しないため、範囲外です。配列内のフィールドが存在するかどうかを確認する方法があれば、それで解決できます。または、いくつの項が入力されているかを確認する方法があれば、私のプログラムは で動作しますが、方法がわかりません存在するかどうかを教えてください。toReturn[5]toReturn[5]1/2 + 1/2 * 1/2toReturn[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];

3 行目を更新し、

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 に答える