c#题例-2025-09-16 04:59:59
日期: 2025-09-16 分类: AI写作 1次阅读
编写一个C#程序,使用递归和分治策略实现一个表达式求值器,支持包含加、减、乘、除四则运算及括号的表达式计算。要求不使用`DataTable.Compute`、`NCalc`等现成表达式解析工具。同时,程序需正确处理运算符优先级与结合性,并在遇到除零或语法错误时抛出有意义的异常。
接口定义如下:
```csharp
public abstract class ExpressionEvaluator
{
public abstract double Evaluate(string expression);
}
```
你需要实现该抽象类的具体子类 `CustomExpressionEvaluator`,并确保以下测试用例通过:
```csharp
var evaluator = new CustomExpressionEvaluator();
Console.WriteLine(evaluator.Evaluate("1 + 2 * 3")); // 输出 7
Console.WriteLine(evaluator.Evaluate("(1 + 2) * 3")); // 输出 9
Console.WriteLine(evaluator.Evaluate("10 / 2 - 1")); // 输出 4
Console.WriteLine(evaluator.Evaluate("2 * (3 + 4) - 5 / 1")); // 输出 15
Console.WriteLine(evaluator.Evaluate("5 + (3 * 2) / 3")); // 输出 7
try
{
evaluator.Evaluate("10 / 0");
}
catch (DivideByZeroException ex)
{
Console.WriteLine(ex.Message); // 应输出“表达式中出现除零错误”
}
try
{
evaluator.Evaluate("1 + * 2");
}
catch (FormatException ex)
{
Console.WriteLine(ex.Message); // 应输出“表达式格式错误”
}
```
请在实现中体现面向对象设计、异常处理机制和良好的代码结构。
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
标签:AI写作
上一篇:无
精华推荐