- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一名 C++ 初学者,目前正在开发一个简单的计算器项目。我希望输入只是数字,所以我做了一个 if else 语句来检查输入是否只是数字,如果是,则进行计算并返回到“输入运算符”bla bla。请忽略情况 2 3 4,因为我想让输入检查器正常工作。我做错了什么以及如何解决这个问题?先感谢您 !但由于某种原因,它就是行不通。
# include <iostream>
using namespace std;
int main() {
bool whileRunning = true;
while(whileRunning){
char op;
float num1, num2;
cout << "\n Enter operator either 1 (+) or 2 (-) or 3 (*) or 4 (/) or 5 to exit: ";
cin >> op;
switch (op)
{
case '1':
cout << "Enter two operands: ";
cin >> num1 >> num2;
if (isdigit(num1) == 0 && isdigit(num2) == 0) {
cout << num1 + num2;
}
else
cout << " Please only input numbers";
break;
break;
case '2':
cout << "Enter two operands: ";
cin >> num1 >> num2;
if (isdigit(num1) && isdigit(num2)) {
cout << num1 - num2;
}
else
break;
break;
case '3':
cout << "Enter two operands: ";
cin >> num1 >> num2;
if (isdigit(num1) && isdigit(num2)) {
cout << num1 * num2;
}
else
break;
break;
case '4':
cout << "Enter two operands: ";
cin >> num1 >> num2;
if (isdigit(num1) && isdigit(num2)) {
if (num2 == 0) {
cout << "You tried to divide by 0, Try again!";
break;
}
else
cout << num1 / num2;
}
else
break;
break;
case '5':
whileRunning = false;
break;
default:
// If the operator is other than +, -, * or /, error message is shown
cout << "Error! Your input must be >= 1 and <= 5. Please try again";
break;
}
}
return 0;
};
最佳答案
您在 isDigit
中进行了错误的检查和isDigit
不能与 float 一起使用。
正如C++引用 所说,返回值为:
A value different from zero (i.e., true) if indeed c is a decimaldigit. Zero (i.e., false) otherwise.
所以你需要检查 isDigit
是否函数返回一个不同于 0 的值。正确的代码是这样的:
# include <iostream>
using namespace std;
int main() {
bool whileRunning = true;
while(whileRunning){
char op;
int num1, num2;
cout << "\n Enter operator either 1 (+) or 2 (-) or 3 (*) or 4 (/) or 5 to exit: ";
cin >> op;
switch (op)
{
case '1':
cout << "Enter two operands: ";
cin >> num1 >> num2;
if (isdigit(num1) != 0 && isdigit(num2) != 0) {
cout << num1 + num2;
}
else
cout << " Please only input numbers";
break;
....
default:
// If the operator is other than 1, 2, 3, 4, 5 error message is shown
cout << "Error! Your input must be >= 1 and <= 5. Please try again";
break;
}
}
return 0;
};
在您的代码中,您测试相反的代码。
您可以在 isDigit
上找到更多阅读内容在此功能 site .
对于 float ,您可以使用其他方法:
if(scanf("%f", &userNum) == 1) {
// Handle item float here
}
所以你的代码看起来像:
# include <iostream>
using namespace std;
int main() {
bool whileRunning = true;
while(whileRunning){
char op;
float num1, num2;
cout << "\n Enter operator either 1 (+) or 2 (-) or 3 (*) or 4 (/) or 5 to exit: ";
cin >> op;
switch (op)
{
case '1':
cout << "Enter two operands: ";
if(scanf("%f %f", &num1, &num2) == 2){ {
cout << num1 + num2;
}
else
cout << " Please only input numbers";
break;
....
default:
// If the operator is other than 1, 2, 3, 4, 5 error message is shown
cout << "Error! Your input must be >= 1 and <= 5. Please try again";
break;
}
}
return 0;
};
您可以找到scanf引用here .
关于c++ - 为什么我的输入检查 if else 语句不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65000236/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!