0

我试图让用户使用带有数组和 cin 的 while 循环输入他们的姓名,但是在输入最后一个人的姓名后,程序崩溃而不是继续前进。有没有办法解决这个问题,还是我需要完全改变代码?我对 c++ 也很陌生,所以可以尽可能简单地给出任何答案吗?

#include <iostream>
#include <string>

using namespace std;

int main()
{
    unsigned int numberofplayers;
        number://loop back here if more than 4 players
    cout << "Number of players: ";
    cin >> numberofplayers;
        if(numberofplayers > 4 || numberofplayers < 1){
            cout << "Invalid number, please enter a number from 1 to 4." << endl;
            goto number;
        }
    string name[numberofplayers];
    cout << "Enter your name" << endl;
    int a = 1;
    while(a < numberofplayers + 1){
        cout << "Player " << a << ": ";
        cin >> name[a];
        cout << "Hello, " << name[a] << "." << endl;
        a++;
    }

}
4

2 回答 2

3

您可能会面临数组索引超出界限,因此将您的 while 循环更改为此并设置a=0为从第 0 个索引开始填充。

while(a < numberofplayers){

}
于 2013-04-19T23:21:56.273 回答
2

您的最后一次迭代超出了数组的大小。您需要将其更改为

while(a < numberofplayers)

另外,另一方面,关键字 goto 不再使用太多。我建议在那里使用一段时间也喜欢

while(true){
    cout<<"number of players";
    cin>>numberofplayers
    if(numberofplayers is valid input){
        break;
    }
    cout<<"bad input";
}

stackoverflow 上有一个问题在这里广泛讨论 goto 的使用: GOTO 仍然被认为是有害的吗?

于 2013-04-19T23:27:11.540 回答