-1
UnityエンジンでDijkstra's Two-stack Calculatorを使用しています。 数学的なエラーが発生しました。計算機の数学的なエラー
入力:"3 + 2"、出力:
しかし
入力:"30 + 20"、出力:
何このコードで間違っていますか?
CODE
using System.Collections.Generic;
public class Calculator
{
public float Evaluate(string Input)
{
string Expression = "(" + Input + ")";
Stack<string> ops = new Stack<string>();
Stack<float> vals = new Stack<float>();
for (int i = 0; i < Expression.Length; i++)
{
string s = Expression.Substring(i, 1);
if (s.Equals("(")) { }
else if (s.Equals("+")) ops.Push(s);
else if (s.Equals("-")) ops.Push(s);
else if (s.Equals("*")) ops.Push(s);
else if (s.Equals("/")) ops.Push(s);
else if (s.Equals(")"))
{
int count = ops.Count;
while (count > 0)
{
string op = ops.Pop();
float v = vals.Pop();
if (op.Equals("+")) v = vals.Pop() + v;
else if (op.Equals("-")) v = vals.Pop() - v;
else if (op.Equals("*")) v = vals.Pop() * v;
else if (op.Equals("/")) v = vals.Pop()/v;
vals.Push(v);
count--;
}
}
else vals.Push(float.Parse(s));
}
return vals.Pop();
}
}
は、あなたはそれをデバッグしていますか?一見すると、2桁の値は考慮されていません。 '2 + 0'を評価します。 '3'と' 0'はスタックに残っていて、決して調べられません – Rob