IF声明

时间:2015-10-08 12:26:53

标签: c++

应用程序要求用户输入学生专业 - 数学或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

出于某种原因,我记不起基础了,这让我感到很沮丧。

此外,如果有人可以指导我朝着正确的方向寻找替代方案,我知道这不是最好的方法,但我又一次努力想要找到一个更好的方法来做到这一点

3 个答案:

答案 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") {