"如果"中的条件的逻辑

时间:2017-11-02 10:56:55

标签: java if-statement

if(class1.getMethod1().subString(0,1) == "1") && !class1.getMethod1().subString(0,1).equalsIgnoreCase(str1.subString(0,1)(shld be 1 or 2 or 3 )

即,字符串值为1或2或3,那么我应该跳过if条件 我无法给予

!class1.getMethod1().subString(0,1).equalsIgnoreCase(str1.subString(0,1) == 1 or 2 or 3

有人可以用适当的逻辑帮助我吗?

4 个答案:

答案 0 :(得分:2)

您可以使用正则表达式来检查您的字符串是以1,2还是3(或不是)

开头
if(!class1.getMethod1().matches("^(1|2|3).*$")){
  //......
}

你不需要子串。

答案 1 :(得分:0)

您可以将字符串的输出存储在如下变量中:

String myStr = class1.getMethod1().subString(0,1);

然后使用equals()方法而不是==

将字符串与输出进行比较

然后,您可以使用||

检查多个条件
if(!myStr.equals("1") || !myStr.equals("2") || !myStr.equals("3")) {
  // Run conditional code...
}

这将使if语句中的代码仅在myStr的输出不是1,2或3时运行,因此如果字符串为1,2或3,则将跳过if语句

答案 2 :(得分:0)

有几个不应处理的案例遵循模式!A && !B && !C

String name = class1.getMethod1();
if (!name.startsWith("1") && !name.startsWith("2") && !name.startsWith("3")) {
    ...
}

答案 3 :(得分:0)

我会用这样的方法创建util类:

boolean isAny(String parameter, String ... values) {
    for(String value : values) {
        if(parameter.equals(value) {
            return true;
        }
    }
    return false;
}

您可以在if语句中使用它:

if(!YourUtil.isAny(class1.getMethod1().subString(0,1), "1", "2", "3")) {
    // 
}

这很好,因为你没有多余的||是什么让Sonar感到高兴。