c++ - 从用户那里获取 10 个整数,然后用户可能会要求显示正数或负数的计数
问题描述
我曾尝试运行此代码,但每次尝试时,程序都会在用户回答显示正整数或负整数的问题之前完成。我究竟做错了什么?
#include <iostream>
using namespace std;
int main() {
int number;
int positiveCount = 0;
int negativeCount = 0;
for (int i = 0; i < 10; i++) {
cin >> number;
if (number > 0) {
positiveCount++;
}
if (number < 0) {
negativeCount++;
}
}
char response;
cout << "Do you want the (p)ositive or (n)egative count? ";
cin >> response;
if (response == 'p') {
cout << "Positive count is " << positiveCount << "\n";
}
if (response == 'n') {
cout << "Negative count is " << negativeCount << "\n";
}
}
解决方案
假设一个行为良好的用户,你的程序是结构良好的。
但是,它不处理意外输入。改变:
cin >> number;
if (number > 0) {
positiveCount++;
}
if (number < 0) {
negativeCount++;
}
对于处理无效输入的东西:
while ( ! cin >> number )
{
cout << "Invalid input. Please try again.\n";
// Clear error flags and ignore input from this line.
cin.clear();
std::string ignoreLine;
std::getline(cin, ignoreLine);
}
if (number > 0) {
positiveCount++;
}
else if (number < 0) {
negativeCount++;
}
推荐阅读
- python - 如何计算运行特定 Python 程序需要多少 CPU、RAM、能量?
- mongodb - 在 kubernetes 上添加 mongoDB statefulset 成员问题
- javascript - ESLint 抱怨从未使用过局部状态变量 no-unused-vars
- django - django 邮件中的图片不显示
- botframework - 修复 RestError 机器人框架
- javascript - 如何在反应中获取容器的 ScreenX 事件?
- amazon-web-services - Terraform 脚本化的 AWS CodePipeline 在部署阶段失败并出现 InternalError
- arrays - 装配:数组中出现整数
- wpf - WPF为ResourceDictionary中的控件样式添加自定义属性
- django - DEBUG = False 导致 500 错误并且无法强制将所有内容记录到 Django 中的控制台