我想转换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