Are you reading your compiler warnings? It should warn that you're using order without initializing it. Line 22 should be int order = options("Shorti", "Junior", "King"); and line 18 should be removed (obviously).
Order is a double, that's why.
If you assign an int to a double, it becomes inaccurate.
for example, if you do
double d = 1;
d won't hold 1, but most likely something like 0.9999999997 or 1.00000003 or something like that. And 1 is not the same as 0.99999999. Solution: Either make order an int, or cast it to an int
1 2
//either
int order;
1 2
//or
switch((int)order)
In general, avoid using floating point variables (like doubles or floats) unless you REALLY need floating point numbers. In this case you don't, so just go with an int.
EDIT: The way it is now it should actually work. Cases do not have {}'s though, it's just
1 2 3 4 5 6
case 1:
statement;
statement;
statement;
case 2:
...
Line 18 of the OP code is an int that hide the global double but it is never initialized so will have a junk value when it goes to the switch. it is not likely to be any of the switch cases and there is no default so the switch gets by-passed.