Tell us what’s happening:
I’m having trouble figure out the logic for this lesson.
Your code so far
var count = 0;
function cc(card) {
// Only change code below this line
if(card>=2 && card <=6){
count++;
return count + " Bet";
}
else if(card>=7||card<=9){
return count + " Hold";
}
else if (card==10||card=="J"||card=="Q"||card=="K"||card=="A"){
count--;
return count + " Hold";
}
return "change me" ;
// Only change code above this line
}
// Add/remove calls to test your function.
// Note: Only the last will display
cc(2); cc(3); cc(7); cc(‘K’); cc(‘A’);
// running test
Cards Sequence 10, J, Q, K, A should return -5 Hold
Cards Sequence 2, J, 9, 2, 7 should return 1 Bet
Cards Sequence 2, 2, 10 should return 1 Bet
Cards Sequence 3, 2, A, 10, K should return -1 Hold
// tests completed Your browser information:
User Agent is: Google Chrome Version 68.0.3440.75 (Official Build) (64-bit)
Try separating the logic which increases or decreases the value of count from what actually gets returned. The card value is the only thing which should increase or decrease the value of the count variable. Also, the value of count should be the only thing which determines the string which gets returned.
The above line returns count + “Bet” only if count >= 2 and count <=6. Count could be any value between 0 and Infinity. The instructions tell you the following:
The function will then return a string with the current count and the string Bet if the count is positive, or Hold if the count is zero or negative.
Why are you basing your return value on count values only between 2 and 6 (inclusive) OR values between 7 and 9 (inclusive)? To return count + " Bet" you only care if count is greater than 0. Otherwise, you should return count + " Hold".
This is what I have so far. It still doesn’t work because the last number in the test leaves from the “Hold” part of the program. I’m still confused how to set this up.
var count = 0;
function cc(card) {
// Only change code below this line
switch(card){
case 2:
case 3:
case 4:
case 5:
case 6:
count++;
break;
case 10:
case "J":
case "Q":
case "K":
case "A":
count--;
break;
}
if(card>=2 && card <=6){
return count + " Bet";
}
else if((card>=7 && card<=9)||(card==10 || card=="J" || card=="Q" || card== "K" || card== "A")){
return count + " Hold";
}
return "Change Me";
// Only change code above this line
}
// Add/remove calls to test your function.
// Note: Only the last will display
cc(2); cc(3); cc(7); cc(‘K’); cc(‘A’);
// running test
Cards Sequence 2, J, 9, 2, 7 should return 1 Bet
Cards Sequence 2, 2, 10 should return 1 Bet
// tests completed
I’ve edited your post for readability. When you enter a code block into the forum, precede it with a line of three backticks and follow it with a line of three backticks to make easier to read. See this post to find the backtick on your keyboard. The “preformatted text” tool in the editor (</>) will also add backticks around text.
If you read my last reply to you (see below), I said were basing what gets returned on the card value and you shouldnot be doing that.
In your newly post code, you are still basing your return logic on the card value. What gets returned has nothing to do with the current card value passed into the function. What gets returned has everything to do with the current count value. You only need one if statement and an else statement (not else if) for the code at the bottom which deals with what to return.