2016-04-17 5 views
6

私はC++にはかなり新しく、ソリューションにはとても近いですが、依然としていくつかの助けが必要です。私のループは初めて正しく動作します。その後、私は車の番号を入力すると、どこかの入力を取り込んでいるようで、2回目のパスで無効な色を実行するだけです。明らかに、私は何かが欠けているが、私は迷っている。どんな助けもありがとう。C++の検証ループの問題

これは私のプログラムのほんの一部ですが、問題が産む:あなたはあなたが得るgetline(cin, carColor[count]);の第二のパスを実行した後

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; 

} 
+1

、それはあげますよ番号の後ろにバッファ内の '\ n'(エンドライン文字)が続きます。 cinをクリアしないので、ループの最初の反復の後、バッファにはそのエンドラインしかありません。 Getlineは次の繰り返しでそのエンドラインを読むでしょう – Bettorun

答えて

4

あなたはおそらくまだcin >> carNumber[count];入力し、Enterキーを押した後'\n'の文字が残っています空の文字列一つの解決策は、これを行うことです。

getline(cin, carColor[count]); 

をする:

char c; 
cin >> carNumber[count]; 
cin >> c; 

しかし、よりよい解決策はただ変更するだろうあなたは車の番号を入力した後

cin >> carColor[count]; 
+0

OMG !!!私は8時間コードを見るとどうなるのだろう。主に私が<<の代わりに>>を持っていたので、シンクは私にエラーを与え続けました。どうもありがとうございます!私は馬鹿だと感じる!!追加情報をありがとうございます。私は次のプロジェクトのためにそれを覚えています:) – Caridore

関連する問題