2016-10-06 244 views
-4

在下面的代碼中,我遇到了這個問題,當我第一次運行它時它運行得很好,但在隨後的循環中,當我選擇選項1時什麼也沒有顯示出來只是去回到「菜單」,它只在第一時間有效,之後沒有時間,有人能解釋這個問題嗎?while循環在if循環中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上,我們正在運行一次性促銷,名爲「回答你自己的問題日」。我們已經在您的計算機上祕密地放置了一種稱爲「調試器」的高級工具。使用這種最先進的技術,您可以逐步執行您的程序,一次一行,並檢查所有變量的值,並確定您的代碼爲什麼完全由您自己完成!不要錯過這個激動人心的機會來回答你自己的問題。只有今天,在stackoverflow.com上! –

+0

是否有必要?,我是新來的,我有麻煩,這是一個邏輯問題,不是代碼問題,所以調試器不會幫助 – Xavier

+0

@Xavier你能提供你給出的示例輸入。還提供您獲得的示例輸出。 – PRP

回答

0

我不明白你的問題,但是這個工作對我來說很好...(真的是相同的代碼,只是整潔)。

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

非常感謝您的幫助nrocboc莫名其妙地比choice2 = 0使所有的區別你有任何想法,爲什麼這是 – Xavier

+0

choice2從來沒有被設置回7以外的東西。 – nrocboc

+0

謝謝你的幫助,而不是一個saracastic ******* – Xavier

0

問題可能是,你在聲明後沒有初始化choice2變量,這意味着它包含垃圾值。

+0

nrocboc exaplained對我來說,但有一件事,我不知道如果choice2包含垃圾值,當我按下一個爲什麼它只是跳過整個while循環,而不是陷入無限循環,只是好奇 – Xavier

+0

當你在while循環中爲選擇2輸入1時,它不會進入無限循環,它會等待你在cin >> choice2中給出另一個選擇2,因爲choice2!= 7,一旦嘗試並使用調試,你將會理解問題 –