文字列を左から右に 0 から 9 までの数字と 4 つの基本的な演算子を含む整数として評価しようとしています (すべての演算子の優先順位が同じであるため、4 + 2 が最初に計算されるため、36として、または36として"5+8+(8/4)"
評価する必要があります)。 )、しかし、括弧の実装に問題があります。15
"9+((3+4)*5)"
44
"4+2*6"
かっこを含めなければ、なんとか機能させることができました。これを行うには、while ループで StringTokenizer を使用して文字列を解析します。各トークンは変数に格納され、数値が含まれている場合はスタックに追加され、演算子が含まれている場合はスタックに追加されます。次に、整数スタックに 2 つの数値がある場合、演算子スタックの演算子に基づいてそれらを評価します。文字列全体が true になるまでこのように処理されstr.hasMoreTokens()
、while ループが中断されます。したがって、次のようなもの8-5+7*3+1/2-4
は完全に機能しますが、括弧を式で機能させる方法が見つかりません
String newStr = str.replaceFirst("[^(]*(", "");
最初のものを含めて、残っているものを再帰的に評価するなど、すべてを切り捨てようとしまし(
たが、これは必要以上に複雑であり、動作させることができませんでした。何時間も考えましたが、もっと簡単な方法が思いつきません。
ありがとう、私はこの時点で完全に迷っているので、ガイダンス/提案は素晴らしいでしょう.