首页 > 解决方案 > 如果 else 条件语句在 java 中不能正常工作

问题描述

我实际上实现了一个简单的程序。但以下代码段无法按我的意愿运行。

if((charAtIndexTwo !='A') || (charAtIndexTwo !='E') || (charAtIndexTwo !='I') || (charAtIndexTwo !='O') || (charAtIndexTwo !='U') || (charAtIndexTwo !='Y')) {
        System.out.println((charAtIndexTwo!='A'));
        if((totalOne%2 ==0) && (totalTwo%2==0) && (totalThree%2==0) && (totalFour%2==0)) {
            System.out.println("Valid");
        }
        else {
            System.out.println("invalid");
        }
    }
    else{
        System.out.println("Invalid");
    }

如果我使用 运行程序charAtIndexTwo = A控制台将打印 false。它不可能发生。我认为,因为在第一个 if 段中,我检查是否charAtIndexTwo等于 A。因为它是 A,程序如何打印 false 而不是跳转到 else 段?谁能建议我这是为什么?

标签: java

解决方案


问题在于您的 OR (||) 条件。(charAtIndexTwo !='A') || (charAtIndexTwo !='E') 现在第一部分肯定是假的,它应该跳转到 else,但是 OR (||) 条件使它检查 (charAtIndexTwo !='E') 是否为真。因此,它没有去 else ,而是进入 if 条件并打印 FALSE (这本身是正确的)

你只需要调整你的 IF 条件逻辑

 if((charAtIndexTwo=='A')||(charAtIndexTwo=='E')||(charAtIndexTwo=='I')||(charAtIndexTwo=='O')||(charAtIndexTwo=='U')||(charAtIndexTwo=='Y'))

{
    System.out.println("Invalid");
}else
{
    System.out.println((charAtIndexTwo != 'A'));
    if ((totalOne % 2 == 0) && (totalTwo % 2 == 0) && (totalThree % 2 == 0) && (totalFour % 2 == 0)) {
        System.out.println("Valid");
    } else {
        System.out.println("invalid");
    }
}

推荐阅读