My problem is that program is not reading codes as i intended \"he\" would.
I have
if (hero.getPos() == (6 | 11 | 16)) {
move = new Object[] {\"Up\",
No. You could create a Set<Integer>
once and then use that, or just:
int number = ci.getNumber();
if (number == 6252001 || number == 5855797 || number == 6251999)
I'd also consider changing those numbers into constants so that you get more meaningful code.
Java won't let you do that. You can do a hash lookup (which is overkill for this) or a case statement, or a big honking ugly multiple compare:
if ((n==1 ) || (n==2) || ...
You cannot do it like that. It ors the 3 number bitwise.
You have to do like this :
if (hero.getPos() == 6 || hero.getPos() == 11 | hero.getPos() == 16)) {
move = new Object[] {"Up", "Right", "Left"};
} else {
move = new Object[] {"Up", "Down", "Right", "Left"};
}
You see the difference ? |
is a bitwise or while ||
is a logical or.
Note also that you have to rewrite the comparison each time.
(6 | 11 | 16)
would be evaluated first to 31 (binary operation), which is 6 != 31
. Not what you want.
Better is to check every single position (you have only 3, so inline is good, for more consider using a loop):
if (hero.getPos() == 6 || hero.getPos() == 11 | hero.getPos() == 16)) {
move = new Object[] {"Up", "Right", "Left"};
} else {
move = new Object[] {"Up", "Down", "Right", "Left"};
}
no.. you have to compare them individually.
No, you're going to need to check ci.getNumber() == ...
for each value, or add them to a collection and check myCollection.contains(ci.getNumber())
. However, you may want to re-think the structure of your code if you are checking a method against several known values.