两个数和一个数学运算符

本文讨论了在编程过程中处理用户输入错误的重要性,特别是针对文本输入。文章介绍了如何使用std::cin进行用户输入,并列举了几种常见的输入错误类型及其处理方法。
大多数有某种用户界面的程序需要处理用户输入.。在项目中,你一直在写,你一直在使用std::cin要求用户输入文本输入。因为文本输入是自由格式的(用户可以输入任何东西),所以用户很容易输入不期望的输入.。
在编写程序时,应始终考虑用户将如何(无意或以其他方式)滥用程序.。一个写得很好的程序会预见用户会如何滥用它,或者是优雅地处理这些情况,或者防止它们发生在第一位(如果可能的话)。一个程序,处理错误的情况下,据说是强大的。
在这节课中,我们来看看具体的办法,用户可以通过标准输入无效的文本输入::CIN,并告诉你一些不同的方式来处理这些情况。
std::cin,缓冲,和提取
为了探讨std::cin和运算符> >可以失败,它首先有助于了解它们是如何工作的一点点。
当我们使用运算符来获取用户输入并将其输入变量时,这称为“提取”。运算符在此上下文中使用,因此称为提取运算符.。

当用户输入响应提取操作输入,数据被放置在一个缓冲区::性病在CIN。缓冲区(也称为数据缓冲区)仅仅是一块内存,用来暂时存储数据,而它是从一个地方移动到另一个地方的.。在这种情况下,缓冲区被用来保存用户输入,而它等待被提取到变量.。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
 
double getDouble()
{
    std::cout << "Enter a double value: ";
    double x;
    std::cin >> x;
    return x;
}
 
char getOperator()
{
    std::cout << "Enter one of the following: +, -, *, or /: ";
    char op;
    std::cin >> op;
    return op;
}
 
void printResult(double x, char op, double y)
{
    if (op == '+')
        std::cout << x << " + " << y << " is " << x + y << '\n';
    else if (op == '-')
        std::cout << x << " - " << y << " is " << x - y << '\n';
    else if (op == '*')
        std::cout << x << " * " << y << " is " << x * y << '\n';
    else if (op == '/')
        std::cout << x << " / " << y << " is " << x / y << '\n';
}
 
int main()

个简单的程序要求用户输入两个数和一个数学运算符。
输入一个双值:5
输入以下的一个:+,-,*,或/:*
输入一个双值:7
5 * 35是7
现在,考虑无效的用户输入可能会打破这个程序。
首先,我们要求用户输入一些数字。如果他们输入的东西以外的数字(例如“Q”)呢?在这种情况下,提取将失败。
第二,我们要求用户输入四个可能的符号之一。如果他们输入的字符以外的符号之一,我们的期望呢?我们将能够提取输入,但我们目前不处理发生什么事后。
第三,如果我们要求用户输入一个符号,他们输入一个字符串,如“*你好”。尽管我们可以提取我们需要的“*”字符,但是缓冲区中还有额外的输入,这可能会导致道路上的问题.。
无效文本输入的类型
我们通常可以将输入的文本错误分成四种类型.:
输入提取成功,但输入是没有意义的程序(如进入' K '作为您的数学运算符)。
输入提取成功,但用户进入额外的输入(例如输入'你好你好'作为您的数学运算符)。
输入提取成功,但用户溢出数值。
输入提取失败(例如试图输入Q到数字输入)。
因此,为了使我们的程序健壮,每当我们要求用户输入时,我们最好确定是否上述的每一个可能发生,如果是的话,写代码来处理这些情况。
让我们深入到每一种情况下,如何处理他们使用std::cin。
错误案例1:提取成功,但输入是没有意义的
这是最简单的案例。考虑以下程序的执行:
### C# 控制台程序实现输入两个数字一个运算符进行数学运算 在C#中,可以通过控制台应用程序接收用户输入两个数字以及一个运算符,并根据运算符执行相应的算术运算(加法、减法、乘法、除法)。下面是一个完整的示例代码,展示了如何实现这一功能。 ```csharp using System; class Program { static void Main() { try { // 提示用户输入一个数字 Console.Write("请输入一个数字: "); string inputA = Console.ReadLine(); double numberA = Convert.ToDouble(inputA); // 提示用户输入运算符 Console.Write("请选择运算符 (+, -, *, /): "); string operatorSymbol = Console.ReadLine(); // 提示用户输入第二个数字 Console.Write("请输入第二个数字: "); string inputB = Console.ReadLine(); double numberB = Convert.ToDouble(inputB); double result = 0; // 根据运算符执行相应的计算 switch (operatorSymbol) { case "+": result = numberA + numberB; break; case "-": result = numberA - numberB; break; case "*": result = numberA * numberB; break; case "/": if (numberB != 0) { result = numberA / numberB; } else { Console.WriteLine("错误:除数不能为零。"); return; } break; default: Console.WriteLine("无效的运算符,请选择 (+, -, *, /) 中的一个。"); return; } // 输出结果 Console.WriteLine($"结果是: {result}"); } catch (FormatException) { Console.WriteLine("输入格式错误,请输入有效的数字。"); } catch (Exception ex) { Console.WriteLine($"发生异常: {ex.Message}"); } } } ``` #### 功能说明: 1. **输入处理**:使用 `Console.ReadLine()` 获取用户输入的字符串,并通过 `Convert.ToDouble()` 将其转换为双精度浮点数,以支持小数运算。 2. **运算符判断**:通过 `switch` 语句对输入运算符进行判断,并执行对应的算术操作。 3. **异常处理**:使用 `try-catch` 块捕获可能发生的输入格式错误或运行时异常,例如非法字符输入。 4. **除法特殊处理**:在执行除法时,检查除数是否为零,避免出现除以零的错误。 5. **输出结果**:将计算结果以清晰的方式输出到控制台。 #### 示例运行: ``` 请输入一个数字: 10 请选择运算符 (+, -, *, /): * 请输入第二个数字: 5 结果是: 50 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值