陷入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;
}
}
谢谢你们,得看那些支架。
答
你需要花括号,并在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” ==回复
会给编译错误
我假设这就是为什么他有“toupper”函数调用。 – dlanod 2011-03-12 19:43:53