我将如何处理在C 中放入计算器中的字母
How Would I handle letters being put in my Calculator in C++
嘿,大家好很久没有编程了,所以我不太好,现在我刚刚陷入错误处理,例外和类似的事情,只是开始学习C ,这是一个我学到的几乎没有什么不同,所以想知道我是否可以在这里得到一些帮助。
我开始制作一个计算器,它进行得很好,但是如果我输入字母而不是数字,我会遇到问题这样的事情..我已经提前知道我的代码可能很混乱,因此接受批评不会伤害我的感受。但是无论如何,这里到目前为止
int main()
{
double num1;
double num2;
char operation;
char again;
cout << "Welcome to Brent's Calculator.n";
cout << "Enter 'Value (operator) Value' ex. 2 + 2" << endl;
cin >> num1 >> operation >> num2;
cout << num1 << " "
<< operation << " "
<< num2 << " = ";
do {
switch (operation) {
case '+':
cout << num1 + num2 << endl;
break;
case '-':
cout << num1 - num2 << endl;
break;
case '*':
case 'x':
case 'X':
cout << num1 * num2 << endl;
break;
case '/':
case '%':
if (num2 == 0) {
cout << "You cant divide by 0" << endl;
}
else {
cout << num1 / num2 << endl;
}
break;
default:
cout << "not understood";
}
cout << "would you like to enter another calculation? (y/n) ";
cin >> again;
cin >> num1 >> operation >> num2;
if (cin.fail()) {
cout << "you need to enter numbers" << endl; //this part added mess with it tomorrow
cin.clear();
cin.ignore(999, '/n');
}
cout << num1 << " "
<< operation << " "
<< num2 << " = ";
} while (again == 'y' || again == 'Y');
//closing bracket of the else for cin.fail
cin.get();
return 0;
}
当然,如果我在cin.fail的语句中不起作用
您的cin.fail因小型错字而无法工作
多字符字符常数
cin.ignore(999, '/n');
应该是
cin.ignore(999, 'n');
更正的代码
好的,尝试了另一种解决方案
所以这个想法是使用 continue
..并丢弃无效值的num1和num2的值(仅用于' ')。我已经使用了null,但是您可以使用任何其他想要的乱价值
#include<iostream>
#include <math.h> /* isnan, sqrt */
using namespace std;
int main()
{
double num1;
double num2;
char operation;
char again;
cout << "Welcome to Brent's Calculator.n";
cout << "Enter 'Value (operator) Value' ex. 2 + 2" << endl;
cin >> num1 >> operation >> num2;
cout << num1 << " "
<< operation << " "
<< num2 << " = ";
do {
switch (operation) {
case '+':
if ((num1 != NULL) && (num2 != NULL ))
cout << num1+ num2 << endl;
break;
case '-':
cout << num1 - num2 << endl;
break;
case '*':
case 'x':
case 'X':
cout << num1 * num2 << endl;
break;
case '/':
case '%':
if (num2 == 0) {
cout << "You cant divide by 0" << endl;
}
else {
cout << num1 / num2 << endl;
}
break;
default:
cout << "not understood";
}
cout << "would you like to enter another calculation? (y/n) ";
cin >> again;
cin >> num1 >> operation >> num2;
if (cin.fail()) {
cout << "you need to enter numbers" << endl; //this part added mess with it tomorrow
cin.clear();
cin.ignore(999, 'n');
num1 = NULL;
num2 = NULL;
continue;
}
cout << num1 << " "
<< operation << " "
<< num2 << " = ";
} while (again == 'y' || again == 'Y');
//closing bracket of the else for cin.fail
cin.get();
return 0;
}
更改后输出
Welcome to Brent's Calculator.
Enter 'Value (operator) Value' ex. 2 + 2
44+44
44 + 44 = 88
would you like to enter another calculation? (y/n) y
a+b
you need to enter numbers
would you like to enter another calculation? (y/n) y
4+4.4
4 + 4.4 = 8.4
would you like to enter another calculation? (y/n)
注意:转角案例是当两个输入号码为num1 = 0和num2 = 0时0 0 = 0(在这种情况下最好使用其他标志)
相关文章:
- 警告处理为错误这里有什么问题
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 使用流处理接收到的数据
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 基于多个条件处理地图中的所有元素
- 如何用数字处理log(0)
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 错误处理.将系统错误代码映射到泛型
- 从文本文件中读取时钟时间和事件时间并进行处理
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- RPN计算器c++错误处理和多个运算符
- 我将如何处理在C 中放入计算器中的字母
- 如何在表达式计算器中处理二进制整数
- C++ - 如何添加函数以处理货币计算器的多种情况
- c++后缀计算器不能处理一行中的两个操作数