static void Main(string[] args) { try { var input = args[0]; Console.WriteLine($"Welcome in Expression Solver!"); Console.WriteLine($"Your expression is: {input}"); var expressionCalculator = new ExpressionCalculator(); var result = expressionCalculator.Calculate(input); Console.WriteLine($"Expression has been calculated successfully."); Console.WriteLine($"The result is: {result}"); Console.ReadLine(); } catch (ArgumentException e) { Console.WriteLine($"Expression is invalid."); Console.WriteLine(e.Message); } catch (Exception e) { Console.WriteLine($"Unrecognized error occured. Error Details:"); Console.WriteLine(e.Message); } }
/// <summary> /// Главный метод программы, с которого начинается выполнение программы /// </summary> /// <param name="args">массив строк, содержащий аргументы командной строки переданные программе</param> private static void Main(string[] args) { Stopwatch watch = new Stopwatch(); watch.Start(); var reader = new ExpressionFileReader(); string expression = null; if (args.Length < 1 || String.IsNullOrEmpty(args[0])) { Console.WriteLine("Некорректное имя файла"); Console.ReadKey(); return; } try { expression = reader.ReadExpressionFromFile(args[0]); } catch (Exception e) { Console.WriteLine(e.Message); Console.ReadKey(); return; } var calculator = new ExpressionCalculator(); Console.WriteLine(expression + "=" + calculator.Calculate(expression)); watch.Stop(); Console.WriteLine("time taken is " + watch.Elapsed.Milliseconds); Console.ReadKey(); }
public void ValidExpression_Should_Return_IntResult(string input, int expectedResult) { var calculator = new ExpressionCalculator(); var result = calculator.Calculate(input); Assert.Equal(expectedResult, result.Value); }
public void Calculate_CorrectExpression_ReturnTrue() { var expression = "2+2"; var calculator = new ExpressionCalculator(); var result = calculator.Calculate(expression); Assert.IsTrue(result == 4); }
public void Should_Calculate_Expression(string input, double expected) { //Act var actual = _sut.Calculate(input); //Assert Assert.AreEqual(expected, Math.Round(actual, 2, MidpointRounding.AwayFromZero)); }
public void CalculateTest() { string expression = "2+2"; ExpressionCalculator expressionCalculator = new ExpressionCalculator(); var res = expressionCalculator.Calculate(expression); Assert.AreEqual(4, res); }
public void ShouldCalculate() { var expression = "2+2"; var calculator = new ExpressionCalculator(); var value = calculator.Calculate(expression); Assert.AreEqual(4, value); }
public void InvalidExpression_Should_Return_AnErrorMessage(string input, bool expectedResult, string errorMessage) { var calculator = new ExpressionCalculator(); var result = calculator.Calculate(input); Assert.Equal(expectedResult, result.IsError); Assert.Equal(errorMessage, result.ErrorText); }
protected void btnExec_Click(object sender, EventArgs e) { Stopwatch watch = new Stopwatch(); watch.Start(); try { this.boxResult.Text = ExpressionCalculator.Calculate(this.boxExpr.Text, this.CurrentUser); } catch (Exception ex) { this.boxResult.Text = ex.Message; } this.lblTime.Text = string.Format("用时: {0}ms", watch.ElapsedMilliseconds); watch.Stop(); this.PageEngine.UpdateControlRender(this.boxResult); this.PageEngine.UpdateControlRender(this.lblTime); }
/// <summary> /// 将字符串类型的数字转换为double类型,支持中文以及带单位 /// </summary> /// <param name="str"></param> /// <param name="doubleResult"></param> /// <param name="kouType"></param> /// <returns></returns> public static bool TryToDouble(string str, out double doubleResult, bool kouType = true) { doubleResult = 0; if (str.IsNullOrWhiteSpace()) { return(false); } if (!kouType) { return(double.TryParse(str, out doubleResult)); } //如果有中文的数字,转为阿拉伯数字 if (ZhNumber.IsContainZhNumber(str)) { str = ZhNumber.ToArabicNumber(str); } if (!double.TryParse(str, NumberStyles.Float, null, out doubleResult)) { if (NumberConvertor.WebUnitDouble(str, out string parsedStr)) { str = parsedStr; } ExpressionCalculator calculator = new ExpressionCalculator();//BUG 没有处理abc等非表达式情况,仍然会认为输入了正确的表达式 if (str.Contains("上")) { str = str.Replace("上", ""); //乘上、加上等 } if (str.Contains("去")) { str = str.Replace("去", ""); } str = str.ReplaceAllFromPairSet(KouStaticData.ZhMathToSymbolMath); var result = calculator.Calculate(str)?.ToString(); if (result != null && result != double.NaN.ToString(CultureInfo.InvariantCulture)) { return(double.TryParse(result, out doubleResult)); } return(false); } return(true); }
/// <summary> /// 解析一段表达式 /// </summary> /// <param name="expr"></param> /// <returns></returns> public string ParseExpr(string expr) { return(ExpressionCalculator.Calculate(expr, this)); }
public void Calculate(string input, decimal expectedResult) { var result = subject.Calculate(input); Assert.That(result, Is.EqualTo(expectedResult)); }