java - if 语句中的第二个条件带有 or 运算符

标签 java

我有以下 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/

相关文章:

java - 使用 Guava Multimap 表示 xml 名称和值

java - 如何将 ByteBuffer 的内容放入 OutputStream?

java - 有没有办法在 java 中使用 package-private 来允许其他包访问?

java - 隐藏界面的反射

java - 从 Sun JVM 过渡到 JRockit 时需要注意的注意事项?

java - 如何用机器人类制作鼠标从a点到b点的运动动画?

java - 检查参数化类型是否是特定类型实例

java - GWT DecoratedTabPanel 选项卡按钮颜色

java - 如何在 Junit 中使用 @InjectMocks 和 @Autowired 注释

java - 使用 Wiremock 验证 Json 主体