0

I'd like to write a switch statement based on a digit range:

1 <= x <= 4: index = 1
5 <= x <= 7: index = 2
8 <= x <= 10: index = 3
(more to come)

Based on the range x is in I want to set the index.
Could I do better apart from nesting if-else statements?

if (number > 0 && number < 5) {
    index = 1;
} else if (number > 4 && number< 8) {
    index = 2;  
} else if (number > 7 && number < 11) {
    index = 3;
}
Bernhard Barker
  • 54,589
  • 14
  • 104
  • 138
membersound
  • 81,582
  • 193
  • 585
  • 1,120

1 Answers1

1

Another idea to keep the rules in a single array.

Can be handy if you have a big amount of ranges and indexes to handle.

  //Rules as an array of [from, to, index] definitions 
  int[][] rules = {
    {  1,  4,  1 },
    {  5,  7,  2 },
    {  8, 10,  3 }
  };

  for (int[] rule : rules)
  {
    if ((number >= rule[0]) && (number <= rule[1])) {
      index = rule[2];
      break;
    }
  }
Stephane Lallemagne
  • 1,246
  • 11
  • 21