应用程序要求用户输入学生专业 - 数学或CIS,我想这样做,如果用户输入的不是那两个,它会给出错误信息并提示用户输入专业试。
这是我到目前为止所做的:
cout << "Math or CIS Major: ";
cin >> major;
if (major != "math" || major != "Math" || major != "CIS" || major != "cis") {
cout << "Invalid major" << endl;
}
cout << "Enter students GPA: ";
cin >> studentGpa;
这将提供无效的主要消息,但它只会转移到GPA
出于某种原因,我记不起基础了,这让我感到很沮丧。
此外,如果有人可以指导我朝着正确的方向寻找替代方案,我知道这不是最好的方法,但我又一次努力想要找到一个更好的方法来做到这一点
答案 0 :(得分:2)
将OR(||
)替换为AND(&&
)
if (major != "math" && major != "Math" && major != "CIS" && major != "cis")
答案 1 :(得分:1)
如果您希望用户必须输入有效的专业,那么您需要将其置于循环中:
std::string major;
std::cout << "Major: ";
std::cin >> major;
while (major != "math" && major != "Math" && major != "CIS" && major != "cis")
{
std::cout << "Please enter a valid major!\n";
std::cout << "Major: ";
std::cin >> major;
}
这样,除非他们输入有效专业,否则该计划将不会继续。
答案 2 :(得分:0)
您在OR(||)和AND(&amp;&amp;)之间感到困惑。在IF条件下用||
替换&&
应该可以解决问题。
您当前的if
语句检查(if A is not equal to B) OR (if A is not equal to C)
。如果B和C是不同的,那么A最多可以等于其中一个,或者换句话说,总是不等于它们中的至少一个。
因此,您的情况将始终评估为真。对此的正确用语是if
条件是重言式。
如果您想跳过所有这些并想要代码:
if (major != "math" && major != "Math" && major != "CIS" && major != "cis") {