【问题标题】:Calculator Using Enum使用枚举的计算器
【发布时间】:2020-02-07 14:57:34
【问题描述】:

您好,我正在尝试在我的代码中使用枚举创建一个简单的计算器,以访问用户理论上将输入的运算符。问题和设置如下图所示。但是我不明白为什么这段代码不起作用。谁能带领我朝着正确的方向前进?我不需要实际的解决方案,只需要推动它。

这是我目前的代码。

enum MathOperator
{
    Add,
    Subtract,
    Multiply,
    Divide,
};

    public double Test5(double num1, double num2, MathOperator op)
    {
        double num3;

     switch (op)
        {
            case MathOperator.Add:
                num3 = num1 + num2;
                return num3;
            case MathOperator.Subtract:
                num3 = num1 - num2;
                return num3;
            case MathOperator.Multiply:
                num3 = num1 * num2;
                return num3;
            case MathOperator.Divide:
                num3 = num1 / num2;
                return num3;
        };

我尝试将枚举放在代码主体中,在枚举之前省略 public,使用 switch (MathOperator) 等等,但我似乎无法让它远程工作。

有3个错误:

CS0535 - “提交”未实现接口成员 Tests.Test5 (双,双,数学运算)

CS0161 - Submission.Test5(double,double, Submission.MathOperator): 不是 所有代码路径都返回一个值

CS0051 - 可访问性不一致:参数类型 'Submission.MathOperator 比方法更难访问 Submission.Test5(double,double, Submission.MathOperator).

【问题讨论】:

  • “不会工作”是什么意思?您看到了什么错误/问题?
  • 通过快速查看它,它应该可以工作。您是否尝试过使用硬编码参数调用此方法?像 Console.WriteLine(Test5(10, 10, MathOperator.Add)); ?
  • 如果你得到的枚举不是这 4 种情况中的任何一种,你会在 swtich 中缺少默认值,或者在 switch 之外缺少额外的返回值。
  • 所以当我这样运行它时,我得到 3 个错误。第一个错误 CS0535 - 'Submission' 没有实现接口成员 Tests.Test5 (double, double, MathOperator), CS0161 - Submission.Test5(double,double, Submission.MathOperator): 并非所有代码路径都返回一个值,并且错误 CS0051 - 可访问性不一致:参数类型 'Submission.MathOperator 比方法 Submission.Test5(double,double, Submission.MathOperator) 更难访问。
  • 请将这些错误消息添加到您的问题中。它们是必不可少的信息。

标签: c# enums switch-statement


【解决方案1】:

我不确定你在问什么,但你的控制台应用程序应该是这样的

class Program
{
    //add public for the error: inconsist accessibility bla bla..
    public enum MathOperator { Add, Subtract, Multiply, Divide, }; 

    static void Main(string[] args)
    {
        Console.WriteLine(Test5(10, 10, MathOperator.Add));
    }

    public static double Test5(double num1, double num2, MathOperator op)
    {
        double num3;

        switch (op)
        {
            case MathOperator.Add:
                num3 = num1 + num2;
                return num3;
            case MathOperator.Subtract:
                num3 = num1 - num2;
                return num3;
            case MathOperator.Multiply:
                num3 = num1 * num2;
                return num3;
            case MathOperator.Divide:
                num3 = num1 / num2;
                return num3;
           //add default switch case for error: not all code paths return a value  bla bla..
            default:
                return 0;
        };

    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    相关资源
    最近更新 更多