c++计算器不断循环
c++ calculator keeps looping
我做了这个计算器
#include <iostream>
using namespace std;
int main()
{
float a, b, result;
char operation;
while (1) {
cout << "Enter the calculation you want to perform (e.g: 1 + 2)n>>";
cin >> a >> operation >> b;
switch(operation)
{
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
result = a / b;
break;
default:
cout << "nInvalid operation. Program terminated." << endl;
return -1;
}
cout << "= " << result << "n" << endl;
}
return 0;
}
它应该一直问同样的问题,如果你输入无效的东西就终止。
如果您第一次输入无效的内容,它将终止。但是,如果您输入一个有效的操作,并且第二次输入一个无效字符,它将继续输出与无效字符之前处理的相同的问题+答案。
默认情况下,当流读取某些内容失败时,它将设置其内部failbit,并且它将保留其无法解析的输入。因此,当您向代码提供输入"x = 2"
,然后尝试将x作为整数读取时,读取失败,x仍然存在。之后发生的任何事情都可能是错误的,而且根据输入的不同,它会以多种不同的方式出错。
为了防止这种情况,检查输入是否成功:
cin >> a >> operation >> b;
if (!cin) {
cout << "Wrong input format. Program terminated.n";
return -1;
}
在您的特殊情况下,您得到的特殊行为是因为您没有在每次循环迭代时重新初始化变量。如果您这样做,您的应用程序将以不同的方式失败,但尽管如此,最好的方法是实际检查输入是否是预期的格式。
这是因为"operation" var超出了"while"范围,即最后一个值被验证,而交换机上的默认主体从未被验证
添加一行
operation=0;
while(1)
后面的将在提供无效答案时终止。
但是,这并不能解释为什么没有它,程序会跳过请求操作,并在提供无效答案时继续输出先前的结果。
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 如何在我的基本计算器中循环遍历数组
- 我用C++做了一个计算器,但我对"type of calculator"的要求循环了两次。有人可以帮助指出我的错误吗?
- 循环计算器
- 在特定条件下的循环和简单计算器的结尾
- (C++)如何让它循环回到菜单?计算器类型
- 对于 while 循环C++基本利息计算器
- 统计计算器输出无限循环
- C++计算器和 for 循环
- 接受char(N)以退出计算器循环
- c++计算器不断循环