我想轉換this Java code(求值使用Dijkstra雙堆棧算法算術表達式)到C#:將Java與C#(統一)
using System;
using System.Collections.Generic;
using System.IO;
public class Evaluate
{
public double Eval(string expression)
{
Stack<string> ops = new Stack<string>();
Stack<double> vals = new Stack<double>();
string s = expression;
while (!s.Equals(""))
{
if (s.Equals("(")) ;
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("sqrt")) ops.Push(s);
else if (s.Equals(")"))
{
string op = ops.Pop();
double 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;
else if (op.Equals("sqrt")) v = Math.Sqrt(v);
vals.Push(v);
}
else vals.Push(double.Parse(s));
}
return vals.Pop();
}
}
但統一停止工作,當我嘗試測試它。我做錯了什麼?
在一個非常簡短的一瞥,它似乎你永遠不會重新分配's',並且你無限循環。 – Jonesopolis
它以什麼方式「停止工作」?當你在調試器中逐步完成時,它究竟在哪裏/如何失敗? – David
你在MonoBehaviour Update函數中調用它嗎? – Frohlich