为什么 char 也没有改变我想要的方式?

Why isn't the char changing the way I Intend it too?

我是新来的所以请原谅我的格式不正确, 我用 c# 编写了一个简单的计算器,但我的乘法和除法似乎无法正常工作。 当 运行 代码工作正常,直到我尝试输出答案然后它输出 "Error, Unknown operator" 这是我告诉它在它不识别存储在操作变量中的运算符时输出的内容。 这是代码(很抱歉转储了这么多代码,我不确定什么是相关的,什么不是):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class MainClass
    {
        public static void Main(string[] args) // method called "main", when the program starts, this runs
        {
        start:
            // variable declarations
            double Num1;
            double Num2;
            int operationId;
            string operationName = "1";
            string operationName2 = "1";
            Char operation;
            double answer;

            // choosing an operator
            Console.WriteLine("select an operation from the list and type it's associated number:");
            Console.WriteLine("1 - sum \n" + "2 - subtraction \n" + "3 - division\n" + "4 - multipication \n");
            operationId = Convert.ToInt32(Console.ReadLine());

            // checking which operation has been chosen
            if (operationId == 1)
            {
                operationName = "added to";
                operationName2 = "added";
                operation = '+';
            } else if (operationId == 2)
            {
                operationName = "subtracted from";
                operationName2 = "subtracted";
                operation = '-';
            } else if (operationId == 3) 
            {
                operationName = "divided";
                operationName2 = "divided by";
                operation = '/';
            } else if (operationId == 4)
            {
                operationName = "multiplied";
                operationName2 = "multiplied by";
                operation = '*';
            } else
            {
                Console.WriteLine("Invalid option");
                goto start;
            }

            // receving user input
            Console.WriteLine("Insert a number to be " + operationName + ":");
            Num1 = Convert.ToDouble (Console.ReadLine());
            Console.WriteLine("Insert a number to be " + operationName2);
            Num2 = Convert.ToDouble(Console.ReadLine());

            //calculating answer
            if (operation == '+')
            {
                answer = Num1 + Num2;
            }
            else if (operation == '-')
            {
                answer = Num1 - Num2;
            }
            else if (operationId == '/')
            {
                answer = Num1 / Num2;
            }
            else if (operationId == '*')
            {
                answer = Num1 + Num2;
            } else
            {
                answer = 0000;
                Console.WriteLine("Error, Unknown operator \n");
                goto start;
            }
            Console.WriteLine();
            Console.WriteLine("The result is:");
            Console.WriteLine(answer);

            Console.ReadKey();
            Console.WriteLine();
            goto start;
        }
    }
}

我想问题在于 - 2 个条件正在检查操作,2 个条件正在检查 operationId。也许您可能希望将所有检查更改为带有操作或带有 operationId。

if (operation == '+')
        {
            answer = Num1 + Num2;
        }
        else if (operation == '-')
        {
            answer = Num1 - Num2;
        }
        else if (operationId == '/')
        {
            answer = Num1 / Num2;
        }
        else if (operationId == '*')
        {
            answer = Num1 + Num2;
        } else
        {
            answer = 0000;
            Console.WriteLine("Error, Unknown operator \n");
            goto start;
        }

您的前 2 if 秒检查 operation,后 2 秒检查 operationId。更改乘法和除法也检查 operation

//...
else if (operation == '/')
{
    answer = Num1 / Num2;
}
else if (operation == '*')
{
    answer = Num1 * Num2; //<-- Change to this from Num1 + Num2
}
//...  

顺便说一下,您的乘法块是将数字相加,而不是乘法。我已经在上面的块中修复了它。