My calculation is not working properly. I can not see anything wrong with the code. Sometimes it does not calculate the score properly. Sometimes it does perfectly. I can not even understand when it does properly and when it does not do it properly.
Score calculation should be like this:
Ace can add to the total score either 1 or 11. If the score is higher than 21, then ace is calculated as 1; otherwise ace is 11.
Here is my code:
// Updates the the value of the cards the player has in their hand
int updateValueOfHand() {
int result = 0; // it will be returned
int ace = 0; // value of ace
for (int i =0; i < playerHand.size(); i++) // loop to see players hand
{
int cardValue; // card value of hand
Card card=(Card)playerHand.get(i); // check the card
cardValue = card.getRank();
if (cardValue == 1) // if card value is 1 (ace)
{
cardValue = 0; // assign to 0
ace += 1; // ace is 1 (if there are 2 aces ace is 2 ...)
}
result = result + cardValue; // result is card value (no ace)
}
//return result;
println("Number of ace: " + ace);
if (ace!=0) //if there is ace
{
for (int j=0; j<ace; j++) // if there is more than 1 ace
{
if (result+11<=21) { // if result is <= 21 when you count ace as 11, then ace is 11
result+=11;
}
else {
result+=1; // otherwise ace is 1
}
}
}
return result;
}