2011-12-04 112 views
2

還好沒有退出,所以我是新來的全做while循環的事情,我試圖做一個主菜單,這裏是我下面的代碼:做while循環嵌套if語句在C++中

int main() 
{ 
    int choice; 
    char sure; 
    bool quit = false; 
    char ctrl; 

    do 
    { 
     cout << "Main Menu." << endl 
      << "1. New Game." << endl 
      << "2. Load Game." << endl 
      << "3. Exit." << endl 
      << "Your choice: "; 
     cin >> choice; 

     if (choice == 1) 
     { 
      cout << "Are you sure you wish to start a new game? (Y/N) "; 
      cin >> sure; 

      if (sure != 'N' || sure != 'n') 
      { 
       ctrl = 'a'; 
       quit = true; 
      } 
     } 
     else if (choice == 2) 
     { 
      ctrl = 'b'; 
      quit = true; 
     } 
     else 
      quit = true; 

     } 
    } 
    while (quit == true); 

    if (ctrl = 'a') 
     cout << "New Game." << endl; 
    else if (ctrl = 'b') 
     cout << "Load Game." << endl; 
    else 
     cout << "Goodbye." << endl; 

    return 0; 
} 

有幾個getchar()拋出那裏。但唯一的問題是,你可能會發現,在我做完所有事情之後,它只是再次重新啓動,而不是退出循環。代碼中有什麼問題?

感謝

+2

¤主要問題是您沒有解決上次發佈時我評論的內容。當你不修復它時,它會*繼續*是錯誤的。爲了讓你有機會走上正軌,用'while(!quit)'替換'while(quit == true)',並開始思考對於其餘代碼的意義。乾杯&hth。, –

+0

不要只用正確的代碼替換錯誤的代碼。答案和問題本身不再有任何意義。 – Xeo

回答

4

而退出你不設置quit爲false,任何地方,你的循環運行等於true。您需要直接獲得布爾值的含義,或者將012部分改爲while(!quit)。我寧願去第一個。

+0

我有... bool quit = false; :L – user1079559

+0

@ user1079559但是,您每次實際想要退出時都將其設置爲true。大聲讀一切:退出是錯誤的;現在在某些條件下做語句並將其設置爲true;在quit退出等於true時重複此操作。儘快滿足戒菸的條件之一就是缺陷顯而易見。 – pmr

5

我認爲你的意思while (quit != true);

記住,比較與==做,if (ctrl = 'a')分配'a'ctrl ..

+1

我通常不喜歡不首先正確的答案,但額外的信息完全值得。它有效地在10分鐘內搶佔OP的下一個問題! – corsiKa

+0

+1你比我更徹底地閱讀。 – pmr

2

你不應該只是改變

while (quit == true); 

while (quit != true); 

也許你知道,但我只是重複

do{ 
//... 
} while(condition) 

迴路是如何工作的。迭代直到條件爲false。在你的情況下,它是總是是真的,這就是爲什麼你有一個無限循環。

P.S.此外在這個answer也有一個戰利品。那裏描述了另一個錯誤。

有希望改正的錯誤的代碼是here

+0

我已經這樣做了,我想我已經脫離了循環,但命令提示符不僅僅是退出,儘管在代碼上的if(ctrl == ...)部分放置了getchar()。 任何想法的? – user1079559

+0

@ user1079559務必糾正'if(ctrl ='a')'和'if(ctrl ='b')'。在'while'之前刪除'}'!這對我來說可以!現在你是在你自己的:) – Beginner

+0

做了所有這一切,它仍然是同樣的問題XD它可能是如此愚蠢的簡單,我會張貼我現在的代碼。 – user1079559