无论如何,输入验证都会执行 true



好的,这里有一个提示用户输入篮球运动员的程序。在用户收到输入玩家名称的提示后,我会验证输入以确保它实际上是一个字符串。好吧,无论验证如何,验证始终执行 true 并终止程序。我的其他输入验证不会发生这种情况,只会发生字符串。关于为什么它总是执行 true 从而终止程序的任何想法?谢谢。

这是我的代码:

#include <iostream>
#include <string>
#include <iomanip>
#include <cstdlib>
using namespace std;

//struct of Basketball Player info
struct BasketballPlayerInfo
{
    string name; //player name
    int playerNum, //player number
        pointsScored; //points scored
};
int main()
{
    int index, //loop count
        total = 0; //hold total points
    const int numPlayers = 5; //nuymber of players
    BasketballPlayerInfo players[numPlayers]; //Array of players
    //ask user for Basketball Player Info
    cout << "Enter the name, number, and points scored for each of the 5 players.n";
    for (index = 0; index < numPlayers; index++)
    {
        //collect player name
        cout << " " << endl;
        cout << "Enter the name of player # " << (index + 1);
        cout << ": ";
        //input validation
        if((!(getline(cin, players[index].name))));  <----validation goes wrong!
        {
            cout << "Player Name must be alphabetical characters only!n";
            cout << "Program terminating please start over." << endl;
            system("pause");
            exit(0);
        }
        getline(cin, players[index].name);
        //collect players number
        cout << "Enter the number of player # " << (index + 1);
        cout << ": ";
        //input validation
        if(!(cin >> players[index].playerNum))
        {
            cout << "Player Name must be numeric characters only!n";
            cout << "Program terminating please start over." << endl;
            system("pause");
            exit(0);
        }
        //collect points scored
        cout << "Enter points scored for player # " << (index + 1);
        cout << ": ";
        //input validation
        if(!(cin >> players[index].pointsScored))
        {
            cout << "Player Name must be numeric characters only!n";
            cout << "Program terminating please start over." << endl;
            system("pause");
            exit(0);
        }
        cin.ignore();
    }
    //display
    cout << "n";
    cout << "Here is the information for each player: n";
    cout << fixed << showpoint << setprecision(2) << setw(5);
    cout << "n";
    cout << "          tNametNumbertPointsn";
    cout << "------------------------------------------------" << endl;
    for(index = 0; index < numPlayers; index++)
    {
        cout << "Player # " << (index + 1);
        cout << ": t" << players[index].name << "t" << players[index].playerNum << "t" << players[index].pointsScored << endl;
        cout << "------------------------------------------------" << endl;
    }
    //display total points scored by all players
    for(index = 0; index < numPlayers; index++)
    {
        //hold total
        total += players[index].pointsScored;
    }
    cout << "Total Points scored are: " << total << endl;
 system("pause");
return 0;
}

您在该行的末尾有一个;

最新更新