IF语句的问题

Issues with IF statement

本文关键字:问题 语句 IF      更新时间:2023-10-16

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

这将给出无效的major消息但是它会转移到GPA

由于某些原因,我记不住基本的东西,这把我绊倒了。

还有,如果有人能给我指引一个正确的方向,找到一个替代的||我知道这不是最好的方法,但我又在努力想出一个更好的方法来做这个

用AND(&&)代替OR(||)

if (major != "math" && major != "Math" && major != "CIS"  && major != "cis")

如果你想让用户输入一个有效的major,那么你需要把它放入一个循环:

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;
}

这样程序将不会继续,除非他们输入一个有效的专业。

您混淆了OR(||)和and (&&)。在中频条件下用&&代替||应该可以达到目的。

当前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") {