陷入while循环中的if语句

时间:2011-03-12 19:39:37

标签: c++ loops

有人能在这个循环中发现我的错误吗?在我阅读回复后,我似乎陷入了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;
      }

    }

谢谢你们,得看那些括号。

9 个答案:

答案 0 :(得分:4)

您需要大括号,并在=条件下将==替换为if

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

答案 1 :(得分:3)

您缺少{}并且您正在使用= ==

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

调高编译器警告级别,并确保代码编译无警告。大多数编制者都会发现if (reply = 'Y')问题并发出警告。

答案 2 :(得分: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;
}

答案 3 :(得分:0)

在'if'

附近的语句周围需要大括号
                    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;
                    }

答案 4 :(得分:0)

您认为if (reply = 'Y')是什么意思?如果您不确定,请考虑reply = 'Y'的含义,然后考虑它在if中的含义相同。

答案 5 :(得分:0)

你在做什么

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

reply ='Y'永远都是真的,因此你总是会输入if()条件体。

答案 6 :(得分:0)

 if (reply = 'Y') //assignment

这是在if中进行作业。设为==

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

答案 7 :(得分:0)

我可以看到您的代码存在三个问题。

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

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

if (condition)
{
    // Stuff
}

除非你只是在声明中做了一件事(你不是这样)。

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

答案 8 :(得分:0)

当你想要==错误并且与文字常量进行比较时,避免=的一个好方法是将表达式反转为

'Y'==回复

如果仅使用=,则会产生编译错误