Counting Cards Switch Function

Tell us what’s happening:
I’m not sure why this isn’t working. If I replace the final switch statement with the below it works just fine.

if (count > 0){
return count + bet;
}
else {
return count + hold;
}

But doesn’t my switch statement do fundamentally the same thing? What am I missing?

  **Your code so far**

let count = 0;
let hold = " Hold"
let bet = " Bet"

function cc(card) {
// Only change code below this line
switch(card) {
  case 2:
  case 3:
  case 4:
  case 5:
  case 6:
    count += 1;
    break;
  case 7:
  case 8:
  case 9:
    count += 0;
    break;
  default:
    count -= 1;
}
    switch(count){
      case count > 0:
        return count + bet;
        break;
      default:
        return count + hold;
    }
// Only change code above this line
}

cc(2); cc(3); cc(7); cc('K'); cc('A');
  **Your browser information:**

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36

Challenge: Counting Cards

Link to the challenge:

A switch is not a replacement for if-else. A switch checks if a value matches one of a series of values. It doesn’t check for conditions like that.

// Good
switch (someValue) {
  case option1:
    // do this
    break;
  case option2:
    // do that
    break;
}

// The same as
if (someValue === option1) {
  // do this
} else if (someValue === option2) {
  // do that
}

You’re trying to do

// Some comparison
if (someValue > option1) {
  // do this
} else {
  // do that
}

// Bad conversion
switch (someValue) {
  case someValue > option1:
    // do this
    break;
  default:
    // do that
    break;
}

// But that actually means
if (someValue === (someValue > option1)) {
  // do this
} else {
  // do that
}

Oh I see, so a case is only checking to make sure something is exactly the expected input. It can’t compare greater or less than?

1 Like

You got it. A switch statement can be thought of as “is this value one of these options”. Super handy but very specific tool.

1 Like

That makes sense.

Thank you!

1 Like