Warum erhalte ich eine Endlosschleife, wenn ich einen Buchstaben anstelle einer Zahl eingebe? [Duplikat

Diese Frage hat hier bereits eine Antwort:

Endlosschleife mit cin beim Eingeben eines Strings, während eine Zahl erwartet wird 4 Antworten

Ich schreibe diesen Code für eine Hausaufgabe (starte gerade C ++, also mach es einfach). Wir haben gerade angefangen, während, und für Schleifen heute. Das Programm läuft einwandfrei, außer wenn Sie einen Buchstaben eingeben, während das Programm nach einer Ganzzahl fragt, wird eine Endlosschleife ausgeführt. Was ist los? (Code unten) *** BEARBEITEN: Um zu verdeutlichen, ist der sich wiederholende Teil: "Die eingegebene Nummer ist negativ. Bitte geben Sie eine positive Nummer ein, um fortzufahren." Der Benutzer hat jedoch keine Möglichkeit, eine andere Nummer einzugeben. Es druckt einfach weiter.

    #include <iostream>
using namespace std;

int main ( )
{
    //define variables
    int num1, num2, total;
    char answer1;

    do
    {
        //user enters a number
        cout << "\nPlease enter a positive number and press Enter: \n";
        cin >&g,t; num1;

        //check that the given num1 value is positive
        while (num1 < 0)
        {
            cout << "The number you entered is negative.\nPlease enter a positive number to continue.\n";
            cin >> num1;
        }

        cout << endl;

        //add the sum of 1 through num1 value
        num2 = 1;
        total = 0;
        while (num1 >= num2)
        {
            total = total + num2;
            num2 ++;
        }

        //tell the user the sum
        cout << "The total of all the integers\nfrom 1 to " << num1 << " is: \n";
        cout << total;

        //ask if the user wants to try again
        cout << "\n\nWould you like to try again with a new number?\nEnter y for yes or n for no.\n";
        cin >> answer1;
    } while (answer1 == 'y');   

    cout << endl;
    return 0;
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage