6

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?

Some Guy
  • 15,854
  • 10
  • 58
  • 67

3 Answers3

5

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.

Phrogz
  • 296,393
  • 112
  • 651
  • 745
2

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).

Dave Newton
  • 158,873
  • 26
  • 254
  • 302
1

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
}
Raynos
  • 166,823
  • 56
  • 351
  • 396