陷入while语句中的if语句

问题描述:

任何人都可以在这个循环中发现我的错误吗?在我阅读答复后,我似乎被卡在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

你需要花括号,并在if条件与==更换=

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

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

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

调高你的编译器警告级别,并确保您的代码编译无警告。 if (reply = 'Y')问题已被大多数编译器发现并警告过。

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; 
} 

您需要靠近 '如果'

    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; 
        } 

什么事可做语句大括号你认为if (reply = 'Y')是什么意思?如果您不确定,请考虑reply = 'Y'的含义,然后考虑它在if内的含义相同。

你正在做

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

回复=“Y”将永远会是真的这样,你总是会进入,如果()条件的身体。

if (reply = 'Y') //assignment 

这是在做if分配。使其成为==

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

我可以看到你的代码有三个问题。

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

其次,你的缩进和大括号被搞砸了。请记住,正确的形式是这样的:

if (condition) 
{ 
    // Stuff 
} 

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

第三,在while(cin.get()!='\n');中有分号。杀了它。如果它是do while循环的一部分,则在while之后应该只有一个分号。

一个好的技巧,以避免=当你想==错误和你比较的常量是如果你只使用=它来表达反转为

“Y” ==回复

会给编译错误