我有以下 if 语句,其中包含两个带有 or 运算符的条件。所以在下面的代码中我收到这个错误
java.lang.NumberFormatException:对于输入字符串:“”
我认为在java中,如果第一个条件无效,则检查if语句中的第二个条件。
compressDuration 可以为空、null、空白或字符串值(如 100)。
在下面的情况下,compressDuration 为空,也为空,第二个条件 Integer.parseInt(compressDuration.trim())
不得检查?
如何编写 if 语句来转换 4 种情况 empty、null、blank 或像 100 这样的 String vlaue。
?
String compressDuration = "";
if(StringUtils.isBlank(compressDuration) || Integer.parseInt(compressDuration.trim())){
System.out.println("The compressDuration has no value or a ");
}else{
}
最佳答案
I thought in java the second condition in the if statment is checked if the first condition is not valid.
我假设您的意思是不检查第一个条件是否为假。这是正确的,但事实并非如此。很明显,StringUtils.isBlank
不会为 ""
if 返回 false
您的问题中的内容是您正在做的事情的有效示例。
不过,我怀疑您的字符串中有空格,而不是 ""
。请注意,您在传递给 Integer.parseInt
时使用了 trim
,但在传递给 StringUtils.isBlank
时没有 .
请注意,如 Eran pointed out ,你的代码无法编译; int
不能与 ||
运算符一起使用,但您的代码具有条件 boolean || int
,这强化了这样的想法:此代码并不能准确表示您实际拥有的内容。
但我怀疑这是一种情况下的 trim
的问题,而不是另一种情况的问题。
也许:
String compressDuration = /*...get it from wherever...*/;
compressDuration = compressDuration.trim();
int duration;
if (StringUtils.isBlank(compressDuration) || (duration = Integer.parseInt(compressDuration.trim())) < 0) {
System.out.println("The compressDuration has no value or a value less than zero");
} else {
System.out.println("The compressDuration is " + duration);
}
或者如果您不喜欢 if
条件中的副作用(并且有充分的理由不喜欢它们,但我对非常简单的情况做了一些异常(exception)):
String compressDuration = /*...get it from wherever...*/;
compressDuration = compressDuration.trim();
int duration = StringUtils.isBlank(compressDuration) ? -1 : Integer.parseInt(compressDuration.trim();
if (duration < 0) {
System.out.println("The compressDuration has no value or a value less than zero");
} else {
System.out.println("The compressDuration is " + duration);
}
关于java - if 语句中的第二个条件带有 or 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44152207/