I’m trying to convert this Java code (Evaluates arithmetic expressions using Dijkstra’s two-stack algorithm) to 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();
}
}
But Unity stop working when I’m try to test it. What have I done wrong? (I’m note that Java not a javascript)
at first blush, line 16 is missing an
– gjfelseinstead of while (!s.Equals("")) you might consider while (!s.IsNullOrEmpty()) you "might" also need to perform some parsing before performing the operations on lines 25-29 - i haven't tried the code.