或者在if语句中使用int的操作数
我的问题是,程序不是读取代码,因为我打算“他”。
我有
if (hero.getPos() == (6 | 11 | 16)) {
move = new Object[] {"Up", "Right", "Left"};
} else {
move = new Object[] {"Up", "Down", "Right", "Left"};
}
当英雄位置为6时,程序仍然转到其他位置。
这是为什么?是因为操作数?如果是,我应该如何改变它?
没有找到相关结果
已邀请:
12 个回复
悍蕾驮苇袜
这将做你想要的。 你所做的是将
与
的结果进行比较,它将按位或在这些数字之间进行。
膛嵌墒缅欠
财沟项胶
你看到了区别?
是按位或
是逻辑或。 另请注意,您每次都必须重写比较。
拟僚疽刊剔
将首先评估为31(二元运算),即
。不是你想要的。 更好的是检查每个位置(你只有3个,所以内联是好的,更多考虑使用循环):
功飘
,或者将它们添加到一个集合中并检查
。但是,如果要针对多个已知值检查方法,则可能需要重新考虑代码的结构。
蹦吃舷弦
甲车劲
然后使用它,或者只是:
我还考虑将这些数字更改为常量,以便获得更有意义的代码。
粟痢凰副
希望这可以帮助。
盛虱
我必须承认我没有检查过这个,但逻辑看起来是正确的。
诫商
方法。除此之外,我不相信有任何特殊的比较语法可以像你想做的那样。
赣借
誓猎贰