amount is a number, but the expressions in the case clauses only evaluate to booleans; the values will never match.
You could always do
switch (true) {
case (amount >= 7500 && amount < 10000):
// Code
break;
case (amount >= 10000 && amount < 15000):
// Code
break;
// etc.
}
It works because the value being matched is now the boolean true, so the code under the first case clause with an expression that evaluates to true will be executed.
It’s kinda “tricky”, I guess, but I see nothing wrong with using it. A simple if–else statement would probably be more concise, and you’d not have to worry about accidental fall-through. But there it is anyway.