C++开发骰子游戏输入合法投注值后while循环无法跳出如何解决
问题产生原因
你编写的while循环条件逻辑错误:
逻辑或(||)的规则是只要任意一个子条件成立,整体表达式结果就为真。我们以合法投注值100代入验证:
bet1 <=99:不成立bet1 >=101:不成立bet1 <=299:100<=299,成立
因此整个while条件返回真,程序进入循环要求重新输入。同理,300会满足bet1 <=499,500会满足bet1 <=499,所有合法投注值都会触发循环,永远无法跳出。
修复方案
推荐直接修改while循环的判断逻辑,仅当输入值不是三个合法值时才进入循环,可读性和可维护性更高:
cout << "Please place a bet. 100, 300, 500kr" << endl; cin >> bet1; // 仅投注值不等于100、且不等于300、且不等于500时,要求重新输入 while (bet1 != 100 && bet1 != 300 && bet1 != 500) { cout << "Please place a valid bet" << endl; cin >> bet1; } // 跳出循环时投注值已经合法,无需额外加if判断,可直接执行后续逻辑 cout << "You have deposited " << " " << bet1 << "" << "And you now have: "<< saldo - bet1 << " " << "Remaining on your account." << endl;
内容的提问来源于stack exchange,提问作者xtremesnus
相关产品推荐
相关产品推荐

