首页 > 解决方案 > 第一个 if 语句始终为真,但第二个不是

问题描述

如果以前有人问过这个问题,我很抱歉。

这是我拥有的一些代码。

    int id1 = 1234;
    int id2 = 5678;
    int idPass1 = 123;
    int idPass2 = 456;

    System.out.println("Welcome. Please enter your Employee ID.");
    while(true) {
        int id = input.nextInt();
        //add more if needed
        if(id != id1 || id != id2){
            System.out.println("Employee does not exist. Please try again.");
        } else {
            break;
        }
    }
    System.out.println("Please enter your password.");
    while(true){
        int idPass = input.nextInt();
        //add more if needed
        if(idPass != idPass1 || idPass != idPass2){
            System.out.println("Incorrect Password entered. Please try again.");
        } else {
            break;
        }
    }

如你看到的。2 if/else 语句完全相同,除了变量。在 IntelliJ 中,带有 ID 的第一条语句表示它始终为真。第二个带有密码的语句没有给我那个警告。

如果第二个 if/else 语句完全相同(减去变量)并且并不总是正确的,那么第一个 if/else 语句如何总是正确的?

(扫描仪在此代码之前声明。)

标签: java

解决方案


由于您的id1id2不相等,因此(id != id1 || id != id2)应始终将表达式评估为真。您可能想使用&&来替换||. 然后你的代码落在第一个循环中,导致第二个表达式没有被评估,所以没有警告。


推荐阅读