如何根据用户选择让do-while循环重新运行?出现无限循环如何解决?
你的代码出现无限循环的核心原因是询问用户是否继续的逻辑放在了while循环的外部,循环体内部从未更新choice变量的值,只要初始值为y,循环判断条件choice == 'y'会永远成立,自然就进入死循环。
修正方案
把询问用户输入的两行代码挪到while循环内部即可,参考修改后的代码:
#include <iostream> int main() { char choice = 'y'; while (choice == 'y') { // 这里放你要执行的业务逻辑 // Do something // 询问逻辑移到循环内部,每次执行完逻辑后询问用户 std::cout << "Would you like to do it again?" << std::endl; std::cin >> choice; } return 0; }
额外优化建议
- 如果要让业务逻辑至少执行一次,更推荐用
do-while循环,不需要提前给choice赋值y,写法更直观:
#include <iostream> int main() { char choice; do { // 这里放你要执行的业务逻辑 // Do something std::cout << "Would you like to do it again?" << std::endl; std::cin >> choice; } while (choice == 'y'); return 0; }
- 如果需要兼容用户输入大写的情况,比如用户输入
Y也能匹配继续执行的逻辑,把判断条件改成choice == 'y' || choice == 'Y'即可。
内容的提问来源于stack exchange,提问作者EMAN-GAMING
相关产品推荐
相关产品推荐

