2016-10-06 32 views
-4

次のコードでは、この問題が発生しています。最初はうまく動作しますが、後続のループではオプション1を選択すると何も表示されません"メニュー"に戻って、それは最初の時間だけ、それ以降の時間は、誰かが問題を説明することができますか?whileループwhileループwhileループ

#include <iostream> 
#include <string> 
#include <vector> 
using namespace std; 

int main() 
{ 
    int choice=0; 
    while(choice != 2){ 
     cout << "(1)Create" << endl; 
     cout << "(2)Exit" << endl; 
     cin >> choice; 
     if(choice == 1){ 
      int choice2; 
      while(choice2 != 7){ 
       cout << "You chose one " << endl; 
       cin >> choice2; 
      } 
     } 
    } 
} 
+3

あなたは幸運です!今日stackoverflow.comでは、「あなた自身の質問日に答える」という1回のみのプロモーションを実行しています。私たちはあなたのコンピュータに、「デバッガ」と呼ばれる非常に高度なツールを密かに配置しました。この最先端のテクノロジーを使用すると、一度に1行ずつ実行しながらプログラムをステップ実行し、すべての変数の値を調べ、自分のコードが何をしているのかを自分で判断する!あなた自身の質問に答えるこのエキサイティングな機会をお見逃しなく。今日だけ、stackoverflow.com! –

+0

これは新しいですか?私はこれに慣れていますが、問題があります。これはロジック上の問題ではなく、デバッガは助けません。 – Xavier

+0

@Xavierは、入力したサンプル入力を提供できますか?また、得られたサンプル出力も提供してください。 – PRP

答えて

0

私はあなたの質問を理解していませんが、これは私のためにうまくいっています...(本当に同じコード、ちょうどneater)。問題が可能性があり

int main() 
{ 
int choice = 0; 

    while (choice != 2) 
    { 
     std::cout << "(1)Create" << std::endl; 
     std::cout << "(2)Exit" << std::endl; 

     std::cin >> choice; 

     if (choice == 1) 
     { 
      int choice2 = 0; 

      while (choice2 != 7) 
      { 
       std::cout << "You chose one " << std::endl; 
       std::cin >> choice2; 
      } 
     } 
    } 
    return 0; 
} 
+0

どうもありがとうございました。何とかchoice2 = 0よりもあなたの助けを借りてありがとうございます。これはなぜ違いがあるのですか? – Xavier

+0

choice2は決して7以外に戻っていませんでした。 – nrocboc

+0

saracastic ******* – Xavier

0

、あなたは宣言の後choice2変数を初期化しませんでしたし、それはそれはゴミ値を含むことを意味します。

+0

nrocbocは私には分かりませんが、choice2に1つのキーを押したときにchoice2にガベージ値が含まれていれば、私は得られません。なぜ無限ループに巻き込まれるのではなく、ループ全体をスキップしたのですか? – Xavier

+0

ループ中に選択肢2に1を入力したときに無限ループにならず、choice2!= 7なので、cin >> choice2で別のchoice2を与えるのを待つでしょう。一度デバッグしてみてください。問題 –