.equals 与其他布尔函数
.equals with other Boolean functions
在我的程序的一小部分中,我试图验证是否有人输入了 M、m、F、f,并且在大多数情况下我都输入了,但是当我将这些语句放在一起时似乎出了点问题。例如,
String _gender = "M";
if(!"m".equals(_gender.toLowerCase())||!"f".equals(_gender.toLowerCase())){
System.out.println("try again");
}else
System.out.println("success");
它告诉我再试一次,但是当我把它写成:
String _gender = "M";
if(!"m".equals(_gender.toLowerCase())){
System.out.println("try again");
}else
System.out.println("success");
它让我成功了。我不知道这是否与我使用 or 的方式有关,但这就是我的猜测。我还认为这可能与支票同时检查两者或某物有关。我知道我已经有一段时间了,它让我感到困惑。
逻辑错误。当两个 equal() 结果都为 false 时,它应该进入“重试”状态。
String _gender = "M";
if(!"m".equals(_gender.toLowerCase()) && !"f".equals(_gender.toLowerCase())){
System.out.println("try again");
}else
System.out.println("success");
让我们评估一下您的代码:
String _gender = "M";
if(!"m".equals(_gender.toLowerCase())||!"f".equals(_gender.toLowerCase()))
if(!true || !false)
=> if(false || true)
=> true
现在你明白了得到输出的原因,try again
。
现在,让我们修复它:
照做
String _gender = "M";
if (!("m".equals(_gender.toLowerCase()) || "f".equals(_gender.toLowerCase())))
计算结果为
如果 (!(true || "f".equals(_gender.toLowerCase())))
=> (!(true))
=> false
这会给你预期的输出,success
在我的程序的一小部分中,我试图验证是否有人输入了 M、m、F、f,并且在大多数情况下我都输入了,但是当我将这些语句放在一起时似乎出了点问题。例如,
String _gender = "M";
if(!"m".equals(_gender.toLowerCase())||!"f".equals(_gender.toLowerCase())){
System.out.println("try again");
}else
System.out.println("success");
它告诉我再试一次,但是当我把它写成:
String _gender = "M";
if(!"m".equals(_gender.toLowerCase())){
System.out.println("try again");
}else
System.out.println("success");
它让我成功了。我不知道这是否与我使用 or 的方式有关,但这就是我的猜测。我还认为这可能与支票同时检查两者或某物有关。我知道我已经有一段时间了,它让我感到困惑。
逻辑错误。当两个 equal() 结果都为 false 时,它应该进入“重试”状态。
String _gender = "M";
if(!"m".equals(_gender.toLowerCase()) && !"f".equals(_gender.toLowerCase())){
System.out.println("try again");
}else
System.out.println("success");
让我们评估一下您的代码:
String _gender = "M";
if(!"m".equals(_gender.toLowerCase())||!"f".equals(_gender.toLowerCase()))
if(!true || !false)
=> if(false || true)
=> true
现在你明白了得到输出的原因,try again
。
现在,让我们修复它:
照做
String _gender = "M";
if (!("m".equals(_gender.toLowerCase()) || "f".equals(_gender.toLowerCase())))
计算结果为
如果 (!(true || "f".equals(_gender.toLowerCase())))
=> (!(true))
=> false
这会给你预期的输出,success