1

我在 C++ 中的 while 循环有问题。while 循环总是第一次执行,但是当程序到达 while 循环的 cin 时,while 循环完美地工作我想知道我做错了什么。提前致谢。如果问题是noobish,我也很抱歉。我还是个初学者。

cout<<"Would you like some ketchup? y/n"<<endl<<endl<<endl; //Ketchup
selection screen
cin>>optketchup;



while (optketchup != "yes" && optketchup != "no" && optketchup != "YES" && optketchup != "Yes"  && optketchup != "YEs"  && optketchup != "yEs"  && optketchup != "YeS"
     && optketchup != "yeS" &&  optketchup != "YeS"  && optketchup != "yES" && optketchup != "y"  && optketchup != "Y"  && optketchup != "No"  && optketchup != "nO"
      && optketchup != "NO"  && optketchup != "n"  && optketchup != "No");
{

    cout<<"You have entered an entered "<<optketchup<<" which is an invalid
 option. Please try again."<<endl;
    cin>>optketchup;

}


if (optketchup == "yes" || optketchup == "YES" || optketchup == "Yes"  || optketchup == "YEs"  || optketchup == "yEs"  || optketchup == "YeS"
     || optketchup == "yeS" ||  optketchup == "YeS"  || optketchup == "yES" || optketchup == "y"  || optketchup == "Y")
{
    slcketchup == "with";
}
else
{
    slcketchup == "without";
}

cout<<"Your sandwich shall be "<<slcketchup<<" ketchup."<<endl;



system ("pause");

再次提前感谢。

4

2 回答 2

3

你有一个分号(';') 在while. 这就是问题所在。

不要写

while(.... lots of conditions ...);
{
    //stuff
}

while(.... lots of conditions ...)
{
    //stuff
}

注意第二个中缺少的;

除此之外,如果您必须检查单词怎么办Pneumonoultramicroscopicsilicovolcanoconiosis。您最终会检查多少个大小写组合?相反,将输入转换为大写并与大写YESor NOor进行比较PNEUMONOULTRAMICROSCOPICSILICOVOLCANOCONIOSIS

于 2012-12-09T06:10:56.960 回答
1

执行单行代码的控制语句可以用两种不同的方式编写。

if (optketchup == "yes") {
  slcketchup = "with";
}
if (optketchup == "yes") slcketchup = "with";

以下代码也是有效的;不同之处在于当optketchup等于时没有任何指令可以执行"yes"

if (optketchup == "yes");

对于其他控制语句也是如此,例如您的while.

此外,=是赋值运算符,==而是比较运算符。当您想使用第一个时,您正在使用后者。
然后,正如其他人已经指出的那样,只需转换optketchup为小写:您只需将小写值与 进行比较"yes",而不是检查使用小写/大写字符混合编写的“是”的任何可能变体。

于 2012-12-09T06:02:19.037 回答