我對C++非常陌生,並且非常接近解決方案,但我仍然需要一些幫助。我的循環第一次正常工作。之後,當我輸入車號時,它似乎在某處抓取一些輸入,並在第二遍中執行無效顏色。顯然,我錯過了一些東西,但我很茫然。任何幫助,將不勝感激。C++驗證循環問題
這只是我計劃的一小片段,但奠定了問題:
while (count < 3)
{
cout << endl << "Enter car color: blue, red or green in lower case. ";
getline(cin, carColor[count]);
if (!(carColor[count] == "blue" || carColor[count] == "red" || carColor[count] == "green"))
{
cout << "That is an invalid color"
<< "The program will exit";
cin.clear();
cin.ignore();
return 0;
}
cout << endl << "Enter car number between 1 and 99: ";
cin >> carNumber[count]; // Enter car number
if (carNumber[count] >99 || carNumber[count] < 1)
{
cout << "That is not a correct number"
<< " The program will exit";
return 0;
}
cout << "car no is:" << carNumber[count] << "color: " << carColor[count];
++count;
// int lapCount{ 1 };
cout << endl;
}
在輸入車號,它會放數字後跟緩衝區中的'\ n'(結尾字符)。由於你沒有清除cin,所以在循環的第一次迭代之後,緩衝區中只有該末端行。然後Getline將在下一次迭代 – Bettorun