1
            if(Character.isDigit(character) && Character.isDigit(expression.charAt(x+1)))
            {
                output += character;
            }
            else if(Character.isDigit(character))
            {
                output += character + " ";
            }   
            else
            {
                output += character;
            }

このコードブロックは、文字列をトラバースするforループの方がはるかに大きくなっています。x + 1はStringOutOfBoundsExceptionを引き起こしますが、それを回避する方法はありますか?

4

1 に答える 1

4

の値が文字列の長さよりも小さいことを確認するチェックを追加してx + 1、文字列の終わりを超えてインデックスを作成しないようにすることができます。

if (Character.isDigit(character) &&
    (x + 1) < expression.length &&
    Character.isDigit(expression.charAt(x+1)))
于 2012-05-11T21:32:45.303 に答える