C++嵌套if语句语法正确性校验及非1值无输出问题求助
问题分析
- 外层逻辑嵌套错误
你现在把所有判断「条件不成立(变量值为2)」的分支,全部写在了if(所有变量都为1)的代码块内部。只有5个变量全部取值为1时才会进入这个外层代码块,内部的haveMoney == 2这类判断永远不可能触发,这就是所有变量不等于1时没有任何输出的核心原因。 - 分支嵌套逻辑错误
当前所有判断条件不满足的if是层层嵌套的关系,就算把这些分支移到外层,也只有前一个条件不满足时才会判断下一个,无法独立输出所有不满足的条件提示。 - 语法层面:当前代码的语法没有报错问题,完全是业务逻辑写反了导致没有输出,和Xcode/VS的环境差异无关。
修正后参考代码
#include <iostream> using namespace std; int main() { int haveMoney, haveTime, amHungry, restaurantOpen, haveTransportation; cout << "Yes = 1, 2 = No" << endl << endl; cout << "Do I have money?" << endl; cin >> haveMoney; cout << "Do I have time?" << endl; cin >> haveTime; cout << "Am I hungry?" << endl; cin >> amHungry; cout << "Are they open?" << endl; cin >> restaurantOpen; cout << "Do I have transportation?"<< endl; cin >> haveTransportation; // 先判断所有条件都满足的情况 if ((haveMoney == 1) && (haveTime == 1) && (amHungry == 1) && (restaurantOpen == 1) && (haveTransportation == 1)){ cout << "Enjoy your McDonalds!" << endl << endl; } else { // 独立判断每个不满足的条件,分别输出提示 if (haveMoney == 2){ cout << "You're broke, so you can't have McDonalds" << endl ; } if (haveTime == 2){ cout << "You don't have enough time to go to McDonalds!" << endl ; } if (amHungry == 2){ cout << "Why are you even thinking about McDonalds, you're not hungry!" << endl ; } if (restaurantOpen == 2){ cout << "McDonalds is closed, tough luck." << endl ; } if (haveTransportation == 2){ cout << "You have no transportation to get to McDonalds." << endl ; } } return 0; }
内容的提问来源于stack exchange,提问作者Samuel Culper
相关产品推荐
相关产品推荐

