我的问题是程序不读码作为我的本意“他”。
我有
if (hero.getPos() == (6 | 11 | 16)) {
move = new Object[] {"Up", "Right", "Left"};
} else {
move = new Object[] {"Up", "Down", "Right", "Left"};
}
当英雄的位置是6,程序还是到别的。
这是为什么? 是不是因为操作数的? 如果是的话,我应该如何改变呢?
我的问题是程序不读码作为我的本意“他”。
我有
if (hero.getPos() == (6 | 11 | 16)) {
move = new Object[] {"Up", "Right", "Left"};
} else {
move = new Object[] {"Up", "Down", "Right", "Left"};
}
当英雄的位置是6,程序还是到别的。
这是为什么? 是不是因为操作数的? 如果是的话,我应该如何改变呢?
使用:
if (hero.getPos() == 6 || hero.getPos() == 11 || hero.getPos() == 16)) {
这将做你想做的。
你所做的是比较hero.getPos()
与结果(6|11|16)
这将做按位或这些数字之间。
其他的答案是正确的,只是不同的思维,你可以使用集。
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"};
}
你不能那样做。 它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"};
}
你看有什么区别? |
是按位或同时||
是一个逻辑或。 还需要注意的是你每次都重写比较。
(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"};
}
不,你将需要检查ci.getNumber() == ...
每个值,或将其添加到集合,并检查myCollection.contains(ci.getNumber())
但是,您可能要重新考虑你的代码的结构,如果你正在检查对几种已知值的方法。
使用回答:
我怎么能测试一个数组包含一定的价值?
你可以创建一个数字数组,并检查您的ci.getNumber()是它。
号你可以创建一个Set<Integer>
一次,然后用它,或者只是:
int number = ci.getNumber();
if (number == 6252001 || number == 5855797 || number == 6251999)
我还会考虑改变这些数字为常数,让你得到更有意义的代码。
有没有这样的运营商。 但是,如果您比较数,你可以用开关做模拟这一点。 方法如下:
int aNumber = ci.getNumber();
swithc(aNumber) {
case 6252001:
case 5855797:
case 6251999: {
...
break;
}
default: {
... // Do else.
}
}
希望这可以帮助。
boolean theyAretheSame = num1 == num2 ? (num1 == num3 ? true:false):false;
我必须承认,我没有检查这一点,但逻辑看起来是正确的。
你可以把所有的数字集合中,然后使用contains()
方法。 除此之外,我不相信这是比较像你想要做的任何特殊语法。
Java将不会让你这样做。 你可以做一个哈希查找(这是矫枉过正这一点)或case语句,或大鸣喇叭丑多比较:
if ((n==1 ) || (n==2) || ...
不行。你必须对他们单独进行比较。