短|快速int值比较

时间:2014-01-31 20:58:21

标签: java validation if-statement comparison

我学会了终结表达,但我想要的是有点不同。

我有以下内容:

int MODE = getMyIntValue();

我做如下比较:

if(MODE == 1 || MODE == 2 || MODE == 3) //do something

我想知道是否有一种简短的方法可以做到这一点,我尝试了类似的东西,但它不起作用:

if(MODE == 1 || 2 || 3) //do something

有一个简短的快速方法吗?我喜欢快速的“ifs”,因为它使代码更加清晰,例如,它更清楚:

System.out.println(MODE == 1 ? text1 : text2):

比这个:

if(MODE == 1) System.out.println(text1):

else System.out.println(text1):

提前致谢!

3 个答案:

答案 0 :(得分:2)

可能你可以做这样的事情

System.out.println(Mode == 1 ? "1" : Mode == 2 ? "2" : "3");

switch-case也使代码比多个if-else

更具可读性

答案 1 :(得分:1)

好吧,如果你不介意拳击,你可以使用你之前准备的一套:

// Use a more appropriate name if necessary
private static final Set<Integer> VALID_MODES
    = new HashSet<>(Arrays.asList(1, 2, 3));

...

if (VALID_MODES.contains(mode)) {
}

你可以使用int[]和自定义“这个数组是否包含这个值”方法如果你想...对于二进制搜索它将是O(N)或O(log N),但我怀疑我们还是在谈论小集。

答案 2 :(得分:1)

我强烈建议使用更类型的方法:

public class QuickIntSample {

enum Modes {
    ONE(1),TWO(2),THREE(3); // you may choose more useful and readable names

    int code;
    private Modes(int code)  {
        this.code = code;
    }

    public static Modes fromCode(final int intCode) {
        for (final Modes mode : values()) {
            if (mode.code == intCode) {
                return mode;
            }
        }
        return null;
    }
} // -- END of enum


public static void main(String[] args) {

    int mode = 2;

    if( Modes.fromCode(mode) == Modes.TWO ) {
        System.out.println("got code 2");
    }

}

}

HTH