-->

或用if语句INT操作数(Or operand with int in if statement)

2019-08-17 08:01发布

我的问题是程序不读码作为我的本意“他”。

我有

if (hero.getPos() == (6 | 11 | 16)) {
    move = new Object[] {"Up", "Right", "Left"};
} else {
    move = new Object[] {"Up", "Down", "Right", "Left"};
}

当英雄的位置是6,程序还是到别的。

这是为什么? 是不是因为操作数的? 如果是的话,我应该如何改变呢?

Answer 1:

使用:

if (hero.getPos() == 6 || hero.getPos() == 11 || hero.getPos() == 16)) {

这将做你想做的。

你所做的是比较hero.getPos()与结果(6|11|16)这将做按位或这些数字之间。



Answer 2:

其他的答案是正确的,只是不同的思维,你可以使用集。

static final Set<Integer> positions = new HashSet<Integer>();
static{
    positions.add(6);
    positions.add(11);
    positions.add(16);
}

if (positions.contains(hero.getPos())){
    move = new Object[] {"Up", "Right", "Left"};
} else {
    move = new Object[] {"Up", "Down", "Right", "Left"};
}


Answer 3:

你不能那样做。 它ORS的3号位运算。

你必须这样做:

if (hero.getPos() == 6 || hero.getPos() == 11 | hero.getPos() == 16)) {
    move = new Object[] {"Up", "Right", "Left"};
} else {
    move = new Object[] {"Up", "Down", "Right", "Left"};
}

你看有什么区别? | 是按位或同时|| 是一个逻辑或。 还需要注意的是你每次都重写比较。



Answer 4:

(6 | 11 | 16)将首先评价为31(二进制操作),这是6 != 31 不是你想要的。

更好的是检查每一个位置(只有3个,所以内联好,更多的考虑使用一个循环):

if (hero.getPos() == 6 || hero.getPos() == 11 | hero.getPos() == 16)) {
    move = new Object[] {"Up", "Right", "Left"};
} else {
    move = new Object[] {"Up", "Down", "Right", "Left"};
}


Answer 5:

不,你将需要检查ci.getNumber() == ...每个值,或将其添加到集合,并检查myCollection.contains(ci.getNumber()) 但是,您可能要重新考虑你的代码的结构,如果你正在检查对几种已知值的方法。



Answer 6:

使用回答:

我怎么能测试一个数组包含一定的价值?

你可以创建一个数字数组,并检查您的ci.getNumber()是它。



Answer 7:

号你可以创建一个Set<Integer>一次,然后用它,或者只是:

int number = ci.getNumber();
if (number == 6252001 || number == 5855797 || number == 6251999)

我还会考虑改变这些数字为常数,让你得到更有意义的代码。



Answer 8:

有没有这样的运营商。 但是,如果您比较数,你可以用开关做模拟这一点。 方法如下:

int aNumber = ci.getNumber();
swithc(aNumber) {
    case 6252001:
    case 5855797:
    case 6251999: {
        ...
        break;
    }
    default: {
        ... // Do else.
    }
}

希望这可以帮助。



Answer 9:

boolean theyAretheSame = num1 == num2 ? (num1 == num3 ? true:false):false;

我必须承认,我没有检查这一点,但逻辑看起来是正确的。



Answer 10:

你可以把所有的数字集合中,然后使用contains()方法。 除此之外,我不相信这是比较像你想要做的任何特殊语法。



Answer 11:

Java将不会让你这样做。 你可以做一个哈希查找(这是矫枉过正这一点)或case语句,或大鸣喇叭丑多比较:

if ((n==1 ) || (n==2) || ...


Answer 12:

不行。你必须对他们单独进行比较。



文章来源: Or operand with int in if statement