首页 > 解决方案 > 比较 C# 中“if”语句中的数据类型?

问题描述

因此,我正在创建一个简单的计算器,开始使用 C# 进行编程,到目前为止,我遇到了两个无法解决的问题。

第一个是由于某种原因,在所有运算符/符号中,它不允许我在字符串旁边添加“-”运算符/符号。它只允许我单独使用“-”运算符和我的变量。(我尝试使用双精度而不是十进制但得到了同样的错误)。

第二个(也是更重要的)是我试图有一个 if 语句,当用户输入错误的数据类型时,它会给出一条消息(并运行另一种方法)。有什么办法可以解决这个问题(或者至少找到一个解决方法)?

谢谢!

这是包含这两个问题的代码示例:

    static void Calc()
        {
            Console.Write("\n\nPlease enter a number here: ");
            decimal num1 = Convert.ToDecimal(Console.ReadLine());

            Console.Write("Please Specify an operator: ");
            string op = Console.ReadLine();

            Console.Write("Please enter another number: ");
            decimal num2 = Convert.ToDecimal(Console.ReadLine());

            if (op == "+")
            {
                Console.WriteLine("The answer is: " + num1 + num2);
            }
            else if (op == "-")
            {
                Console.WriteLine("The answer is: " + num1 - num2);
            }
            else if (op == "*")
            {
                Console.WriteLine("The answer is: " + num1 * num2);
            }
            else if (op == "/")
            {
                Console.WriteLine("The answer is: " + num1 / num2);
            }
            else
            {
                OpElse();
            }

            if (num1 || num2 != Decimal)
            {
                Console.WriteLine("You must input a number");
                Else();
            }

标签: c#if-statement

解决方案


当用户输入错误的数据类型时,我正在尝试使用 if 语句给出消息(并运行另一种方法)。有什么办法可以解决这个问题(或者至少找到一个解决方法)?

您可以尝试该Decimal.TryParse方法,该方法将尝试将字符串解析为小数,但如果失败则不会抛出异常。它看起来像这样:

if (!Decimal.TryParse(Console.ReadLine(), out decimal num1)) 
{
    Console.WriteLine("No no my friend. You have to enter a valid number.");
}

..在所有运算符/符号中,它不会让我在字符串旁边添加“-”运算符/符号。它只允许我单独使用“-”运算符和我的变量。(我尝试使用双精度而不是十进制但得到了同样的错误)。

这与运算符优先级有关。事实上,即使减号是唯一在编译时抱怨的,加法在运行时会给你错误的结果。问题只是 (first)+-. 这导致在进行计算之前将第一个数字添加到字符串中。要解决此问题,只需将计算部分括在括号中:

Console.WriteLine("The answer is: " + (num1 - num2));

或将计算移出字符串连接:

var result = num1 + num2;
Console.WriteLine("The answer is: " + result);

推荐阅读