c# - 比较 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();
}
解决方案
当用户输入错误的数据类型时,我正在尝试使用 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);
推荐阅读
- python-3.x - 测试 spark 数据框列是否包含 5 位数字
- python - 创建 Keras 函数
- keycloak - 如何从 3rd 方 IdP 自定义 Keycloak(代理)OpenID 连接端点回调?
- r - 从 R 数据框列中选择值
- c++ - (UE4) UposeableMeshComponent的骨骼变形后如何正确渲染
- dataframe - 如何在 python 中使用雪花连接创建 Spark 数据框?
- html - HTML/CSS 如何将图像/图标与文本放在一起?
- python - 使用 matplotlib 和 seaborn 创建圆形密度图
- xml - 如何让 Chrome 加载 XML 原始文件?
- android - 协程组合作业未完成