首页 > 解决方案 > 从用户那里获取 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";
    }
}

标签: c++integer

解决方案


假设一个行为良好的用户,你的程序是结构良好的。

但是,它不处理意外输入。改变:

    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++;
    }

推荐阅读