我正在测试一些布尔逻辑,并且当我首先更改逻辑运算符(如果表达式从& & ||)时,卡住了,程序工作不正常,然后只执行第一条语句,而不是使用哪个输入。有人可以解释这种行为吗?为什么运营商||不在这里工作?
((gender != 'M' || gender != 'F') || (age < 0))
public static void main(String[] args)
{
char gender = 'W';
int age = 0;
Scanner scan = new Scanner(System.in);
System.out.println("Type gender: ");
gender = scan.nextLine().charAt(0);
System.out.println("Type age: ");
age = scan.nextInt();
if((gender != 'M' && gender != 'F') || (age < 0))
{
System.out.println("Error in typed values");
}
else if((gender == 'M') && (age < 18))
{
System.out.println("Boy");
}
else if((gender == 'M') && (age >= 18))
{
System.out.println("Man");
}
else if((gender == 'F' && age < 18))
{
System.out.println("Girl");
}
else if((gender == 'F' && age >= 18))
{
System.out.println("Woman");
}
}
}
后置扫描仪代码。 –
你期望你的状况应该是什么? – SMA
由于使用else if,所以'if'条件全部互斥。因此,只有一个如果有的话将适用。 – Mena