Reputation: 16210
Is there any easier way of checking one variables value against several others? Currently I'm using code like this:
if(a[i] == a[i-13] || a[i] == a[i+13] || a[i] == a[i-1] || a[i] == a[i+1]){
//my code
}
Now, is there a shorter way to do this? I know I can use a switch, but then I'd have to write my function several times. Is there an easier way of doing this?
Upvotes: 6
Views: 1645
Reputation: 303520
You do not need to write your function several times with a switch:
switch(a[i]){
case a[i-13]:
case a[i+13]:
case a[i-1]:
case a[i+1]:
// This code will run if any of the above cases are true.
}
Amusingly, however, this is just about the same number of characters (depending on how you format it). A switch statement in general is less powerful than an explicit if
statement, but in this case I find it clearer and less error-prone.
Upvotes: 5
Reputation: 160321
And better yet:
if (matchesAdjacent(a, i)) {
// etc.
}
Move the logic out of the mainline code into an appropriately-named method.
This also lets you do your bounds checking there (if it isn't already guaranteed elsewhere).
Upvotes: 2
Reputation: 169541
No. However the following looks neater:
if(a[i] == a[i-13] ||
a[i] == a[i+13] ||
a[i] == a[i-1] ||
a[i] == a[i+1]
) {
//my code
}
Upvotes: 1