当用户输入'Q'或'q'退出程序时,我的C ++程序不会在循环中退出。前两个选项工作正常并调用它们的相应函数,但“退出程序”选项只是无限期地重新启动while循环。
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main()
{
char choice; //Varible to hold the user's choice.
while (choice != 'Q' || choice != 'q')
{
//Display the menu and retrieve the user's choice.
cout << "Please choose from one of the options below:\n\n";
cout << "A. Calculate the total amount of your bill [Enter A]\n";
cout << "B. Calculate your BMI [ENTER B]\n";
cout << "Q. Quit the program [Enter Q]\n\n";
cout << "Enter your choice: ";
cin >> choice;
//Either calculate the user's bill or their BMI based on their choice.
if (choice == 'A' || choice == 'a')
{
caLculateBillAmount();
}
else if (choice == 'B' || choice == 'b')
{
calculateBMI();
}
}
return 0;
}
答案 0 :(得分:3)
您应该只使用while (choice !='Q' && choice !='q') {...}
。是的,你应该将choice
初始化为与'Q'和'q'不同的东西。只需执行char choice=0;
之类的操作即可。
答案 1 :(得分:0)
问问自己以下评估内容:
choice != 'Q' || choice != 'q'
如果选择是&#39; Q&#39;然后选择不是&#39; q&#39;所以测试的右半部分是真的。
如果选择是&#39; q&#39;然后选择不是Q&#39; Q&#39;所以测试的左半部分是真的。
你需要使用&amp;&amp;代替||,或者你可以简单地使用toupper(选择)!=&#39; Q&#39;。