c++ - c++中的无限do-while循环
问题描述
该函数displayMenu()
在 Main 条件下被调用while(menuChoice != Q)
,但函数本身有一个内部无限循环。
关于为什么显示菜单功能中的循环是无限的任何帮助都会很棒......我认为这可能与do-while
结构或关系运算符!=
工作不正常有关。
FUNCTION DISPLAYMENU:
char displayMenu()
{
// can be useful info during development
cout << "Entered function displayMenu..." << endl;
char whatToDo = '?';
do {
//Display Menu Options
cout <<"Upload a regional sales data file \tU" <<endl;
cout <<"display details (All loaded data) \tA" <<endl;
cout <<"list details for specific Order number \tO" <<endl;
cout <<"display summary by Region \tR" <<endl;
cout <<"display summary by print method \tM" <<endl;
cout <<"Clear all data \tC" <<endl;
cout <<"Quit \tQ" <<endl;
cout <<"\nPlease Enter Your Menu Choice: " <<endl;
cin >> whatToDo;
} while (whatToDo != 'U' ||
whatToDo != 'A' ||
whatToDo != 'O' ||
whatToDo != 'R' ||
whatToDo != 'M' ||
whatToDo != 'C' ||
whatToDo != 'Q');
// can be useful info during development
cout << "Returning " << whatToDo << " from displayMenu..." << endl;
return whatToDo;
} // END function displayMenu()
FUNCTION MAIN
while (menuChoice != 'Q'){
menuChoice = displayMenu();
}
解决方案
while (whatToDo != 'U' ||
whatToDo != 'A' ||
whatToDo != 'O' ||
whatToDo != 'R' ||
whatToDo != 'M' ||
whatToDo != 'C' ||
whatToDo != 'Q');
不管是什么whatToDo
,这些条件中至少有 6 个是true
这样,你就会得到一个无限循环。
你想要的是继续循环,直到条件之一是false
.
你应该改用这样的东西:
while (whatToDo != 'U' &&
whatToDo != 'A' &&
whatToDo != 'O' &&
whatToDo != 'R' &&
whatToDo != 'M' &&
whatToDo != 'C' &&
whatToDo != 'Q');
推荐阅读
- reactjs - 如何使用获取的变量作为材料 UI 日期选择器的初始状态?
- angular - 错误:“仪表板组件”类型上不存在属性“数据”
- arrays - 用于简单数组特定值替换和转换的 MongoDB 聚合
- javascript - Firebase Firestore 集合无法检索 - 反应原生
- node.js - NPM 在通过 apt 安装时需要 x11
- flutter - Flutter:BLoC 通过监听数据流来发出状态
- html - 疯狂造型的导航菜单
- image - 你好,怎么把手机上的图片添加到电脑上?
- flutter - rxdart 流可以在没有活动侦听器的情况下执行工作吗?
- jmeter - 为什么我在 JMeter 的发布请求中收到 403 错误?