2011-03-12 187 views
0

任何人都可以在這個循環中發現我的錯誤嗎?在我閱讀答覆後,我似乎被卡在If語句中。此外,將打破退出沒有條件爲真循環似乎引發錯誤:陷入while語句中的if語句

代碼「事情之前預期的主要表現」:

while (rowNum > (FC_Row)) 
    { 
     cout << "That row is not located in our first class section. Would you like to change your class so you can sit in that row (Y/N)?" << endl; 
     cin >> reply; 
     reply = toupper(reply); 
     while (reply != 'Y' && reply !='N') 
     { 
      cin.clear(); 
      while(cin.get()!='\n'); 
      cout << "Please indicate your answer with Y (yes) or N (no)." << endl; 
      cout << "try again:" << endl; 
      cin >> reply;        
      reply = toupper(reply); 
     } 

    if (reply == 'Y') 
     { 
     ticketType = 'E'; 
     break; 
     } 
    else 
     { 
     cout << "Then choose a row numbered 1-" << (FC_Row) << endl; 
     cin >> rowNum; 
     } 

    } 

謝謝你們,得看那些支架。

+0

我假設這就是爲什麼他有「toupper」函數調用。 – dlanod 2011-03-12 19:43:53

回答

4

你需要花括號,並在if條件與==更換=

if (reply == 'Y') 
{ 
    ticketType = 'E'; 
    break; 
} 
else 
{ 
    cout << "Then choose a row numbered 1-" << (FC_Row) << endl; 
    cin >> rowNum; 
} 
3

你缺乏{}和你使用=要將==

if (reply == 'Y') { 
     ticketType = 'E'; 
     break; 
} else { 
     cout << "Then choose a row numbered 1-" << (FC_Row) << endl; 
     cin >> rowNum; 
} 

調高你的編譯器警告級別,並確保您的代碼編譯無警告。 if (reply = 'Y')問題已被大多數編譯器發現並警告過。

0
if (reply = 'Y') 
{ 
ticketType = 'E'; 
break; // I want this to exit the while loop, I get a syntax error from this break. 
} 
else 
{ 
cout << "Then choose a row numbered 1-" << (FC_Row) << endl; 
cin >> rowNum; 
} 
0

您需要靠近 '如果'

    if (reply = 'Y') 
        { 
         ticketType = 'E'; 
         break; // I want this to exit the while loop, I get a syntax error from this break. 
        } 
        else 
        { 
         cout << "Then choose a row numbered 1-" << (FC_Row) << endl; 
         cin >> rowNum; 
        } 
0

什麼事可做語句大括號你認爲if (reply = 'Y')是什麼意思?如果您不確定,請考慮reply = 'Y'的含義,然後考慮它在if內的含義相同。

0

你正在做

if (reply = 'Y') //Should be reply=='Y' 
ticketType = 'E'; 

回覆=「Y」將永遠會是真的這樣,你總是會進入,如果()條件的身體。

0
if (reply = 'Y') //assignment 

這是在做if分配。使其成爲==

if (reply == 'Y') //comparison! 
0

我可以看到你的代碼有三個問題。

首先,您正在使用if (reply = 'y')=是C++中的賦值運算符,不是比較運算符。你想要if (reply == 'y')

其次,你的縮進和大括號被搞砸了。請記住,正確的形式是這樣的:

if (condition) 
{ 
    // Stuff 
} 

除非你只在陳述中做了一件事(你不是)。

第三,在while(cin.get()!='\n');中有分號。殺了它。如果它是do while循環的一部分,則在while之後應該只有一個分號。

0

一個好的技巧,以避免=當你想==錯誤和你比較的常量是如果你只使用=它來表達反轉爲

「Y」 ==回覆

會給編譯錯誤