Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 短|快速整数值比较_Java_Validation_If Statement_Comparison - Fatal编程技术网

Java 短|快速整数值比较

Java 短|快速整数值比较,java,validation,if-statement,comparison,Java,Validation,If Statement,Comparison,我学习了术语表达,但我想要的是一点不同 我有以下资料: int MODE = getMyIntValue(); if(MODE == 1 || MODE == 2 || MODE == 3) //do something 我做了如下比较: int MODE = getMyIntValue(); if(MODE == 1 || MODE == 2 || MODE == 3) //do something 我想知道是否有一种简单的方法可以做到这一点,我尝试了类似的方法,但没有成功: if(M

我学习了术语表达,但我想要的是一点不同

我有以下资料:

int MODE = getMyIntValue();
if(MODE == 1 || MODE == 2 || MODE == 3) //do something
我做了如下比较:

int MODE = getMyIntValue();
if(MODE == 1 || MODE == 2 || MODE == 3) //do something
我想知道是否有一种简单的方法可以做到这一点,我尝试了类似的方法,但没有成功:

if(MODE == 1 || 2 || 3) //do something
有一种快捷的方法吗?我喜欢快速的“如果”,因为它使代码更清晰,例如,它更清晰:

System.out.println(MODE == 1 ? text1 : text2):
除此之外:

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

else System.out.println(text1):

提前谢谢

也许你可以这样做

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

也使代码比多个if-else更具可读性

可能您可以这样做

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

也使代码比多if-else更具可读性好吧,如果你不介意拳击比赛,你可以使用你之前准备的一套:

// 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)) {
}
//如有必要,请使用更合适的名称
私有静态最终集有效_模式
=新哈希集(Arrays.asList(1,2,3));
...
if(有效模式包含(模式)){
}

如果需要,可以使用
int[]
和自定义的“此数组是否包含此值”方法。。。二进制搜索可能是O(N)或O(logn),但我怀疑我们讨论的是小集合。

如果您不介意拳击比赛,您可以使用您之前准备的集合:

// 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)) {
}
//如有必要,请使用更合适的名称
私有静态最终集有效_模式
=新哈希集(Arrays.asList(1,2,3));
...
if(有效模式包含(模式)){
}

如果需要,可以使用
int[]
和自定义的“此数组是否包含此值”方法。。。对于二进制搜索,可能是O(N)或O(logn),但我怀疑我们讨论的是小集合。

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

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

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

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

应该有HashSer不应该有?不过,谢谢你,就像我预期的那样工作(y)@Murillo:如果你使用的是Java7,那就不是了——它是“菱形操作符”(实际上不是操作符,但是…),应该有HashSer,不应该有?不过,谢谢你,工作得像我预期的那样(y)@Murillo:如果你使用Java 7,那就不是了-它是“钻石操作符”(实际上不是一个操作符,但是…)嗯,它工作了,但是我可以更好地利用Jon Skeet的建议,但是你的回答也非常好和简单,+1嗯,它工作了,但是我可以更好地利用Jon Skeet的建议,但是你的回答也很好很简单,+1