java - 如果 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 段?谁能建议我这是为什么?
解决方案
问题在于您的 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");
}
}