我正在用 C++ 编写一个简单的计算器(我正在学习课程)。当检查是否被零除时, continue 会进入循环的下一次迭代,而当检查 isdigit() 时,循环将变为无限。
课程本身:
#include <iostream>
using std::cout;
double Calc::Calculate(double a, char operation, double b)
{
switch (operation)
{
case '+':
return a + b;
case '-':
return a - b;
case '*':
return a * b;
case '/':
return a / b;
default:
return 0.0;
}
}
检查并输出:
while (true)
{
cin >> a >> operation >> b;
if ( !(isdigit(a)) || !(isdigit(b)) ) {
cout << "Я считаю только числа :(\n";
continue;
}
else if (b == 0 && operation == '/') {
cout << "На ноль дельть нельзя!\n";
continue;
}
else {
result = c.Calculate(a, operation, b);
cout << a << " " << operation << " " << b << " = " << result << endl;
}
}
这很简单,你做了一个无限循环并且没有添加退出它的能力。
假设您有一个特殊的转义字符,例如;。
然后您需要检查输出,如下所示:
您还需要将 type 替换
a为btypedouble。所以你不必添加检查。您可以删除检查is_digit,一切都会正常。你只需要在默认情况下编写错误输入的处理即可。如果你想将其
a保留b为字符串,那么你可以添加一个检查(即使a它b是一个 typestring)。现在我们需要将支票中的
is_digitwith替换is_number为数字。