我试图制作简单的if语句,我需要查看我的两个String的值是否为空(不等于"")。 我用&&操作员,但遗憾的是,它只检查一个字符串是否正确,如果它不是空的,如果第二个字符串是空的,他就会通过。制作&&对我来说有点无用。
if ( StringUtils.isNullOrEmpty(name) && StringUtils.isNullOrEmpty(sname)
) {do something}
我需要他们两个都要正确检查。如果至少有一个字符串为空,则返回false。 如果两者都不为空则返回true。
答案 0 :(得分:7)
目前,如果两个字符串都为空或空,则条件为真。
如果您希望不为空或空,则需要:
if ( !StringUtils.isNullOrEmpty(name) && !StringUtils.isNullOrEmpty(sname)
) {do something}
答案 1 :(得分:1)
&&
很聪明,如果第一个条件为假,则不会尝试第二个条件。
使用&
可以达到你想要的效果。
答案 2 :(得分:0)
问题是你的支票错了。如果两者都为空,你希望它只能通过。
所以你应该去
if ( !StringUtils.isNullOrEmpty(name) && !StringUtils.isNullOrEmpty(sname)
) {do something}
或者如果你想在if语句中捕获它,如果其中一个是空的,你应该使用或:
if ( StringUtils.isNullOrEmpty(name)|| StringUtils.isNullOrEmpty(sname)
) {do something}
答案 3 :(得分:0)
isNullOrEmpty
将返回true,但是您希望它不为空,所以使用!来否定条件。
if ( !StringUtils.isNullOrEmpty(name) && !StringUtils.isNullOrEmpty(sname)
) {do something}
另一种选择是:
if(!(StringUtils.isNullOrEmpty(name)|| StringUtils.isNullOrEmpty(sname) )){做某事}
但是,以上不是推荐的编码风格,因为很难抓到!隐藏在行之前,代码阅读器可能会混淆。
关于||和&&运营商优化检查:
||从左到右检查第一个真实条件,如果发现一个真实条件,则跳过任何进一步的检查。
&安培;&安培;从左到右检查第一个错误条件,如果发现一个错误条件,则跳过任何进一步的检查。
答案 4 :(得分:0)
起初它对我来说没有任何意义,但它没有用。只有这时我意识到我需要翻转返回语句。
if (!StringUtils.isNullOrEmpty(name) && !StringUtils.isNullOrEmpty(sname)) {
System.out.println("ok");
return true;}
else {
System.out.println("empty names");
return false;
}
现在似乎工作正常。
答案 5 :(得分:0)
使用'&' 作为logical operator
,您可以执行以下操作。在这里,我们没有使用StringUtils
-
if( ( null!=name && !name.isEmpty() ) &
( null!=sname && !sname.isEmpty() ) ){do something}