Java,二十一点计算不正确

标签 java

我正在努力将一个简单的学校作业变成一个实际的游戏。仅供引用,我所做的一切都是额外的功劳。

由于某些原因,卡片无法正确计算。示例:Jack 和 3 计算为 20,Ace 和 3 计算为 13。我知道我没有添加零件来制作 Ace 1 或 11,我想先弄清楚计算结果。

我将只添加有问题的类,但如果您需要我的所有代码,请告诉我。

public class BlackJack extends CardGame{

int computePlayerValue, computeDealerValue;
int cardValue1, cardValue2;


public BlackJack() {
    super();
    playerHand = 2;
    dealerHand = 2;
}

public void display() {
    System.out.println("BlackJack");
}   

public void playGame() {

}

public int getCardValue(Card card) {
    final String rank = card.getRank();
    switch (rank) {
        case "Ace":
            return 1;   
        case "King":
            return 10;
        case "Queen":
            return 10;
        case "Jack":
            return 10;
        default:
            return Integer.parseInt(rank);
    }
}

public void dealCards() {
    //Player 1
    System.out.println("Player 1:");
    for(int x = 0; x < playerHand; x++) {
        shuffle();
        System.out.println(fullDeck[x].getRank() + " of " + fullDeck[x].getSuit());
    }
    cardValue1 = getCardValue(fullDeck[0]);
    cardValue2 = getCardValue(fullDeck[1]);

    computePlayerValue = cardValue1 + cardValue2;
    System.out.println("Player has: " + computePlayerValue);



    //Compute dealers hand
    System.out.println("\nPlayer 2:");
    for(int x = 0; x < dealerHand; x++) {
        shuffle();
        System.out.println(fullDeck[x].getRank() + " of " + fullDeck[x].getSuit() );
    }
}
}

最佳答案

for(int x = 0; x < playerHand; x++) {
    shuffle();
    System.out.println(fullDeck[x].getRank() + " of " + fullDeck[x].getSuit());
}

shuffle() 应该在循环之前调用,而不是在循环期间调用。在循环播放卡片时洗牌就是在打印卡片后更换卡片。这就是您的结果混淆的原因。

shuffle();
for(int x = 0; x < playerHand; x++) {
    System.out.println(fullDeck[x].getRank() + " of " + fullDeck[x].getSuit());
}

关于Java,二十一点计算不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31714716/

相关文章:

java - 使用java获取计算机中硬盘的真实序列号

java - JTextArea 退格和清除

java - 在我的应用程序上执行 Ant 构建时出现 java.net.ConnectException

java - 如何更改文本文件的分隔符?

java - 如何将用户输入从一个类获取到另一个类

java - SpringBoot JWT安全如何

java - 在 Android 应用程序中实现 Jetty 服务器

java - 检查这是什么java类类型

java - 如何在alertDialog中看到我在editText窗口中输入的文本?

java - Spring Data MongoDB 始终将对象标识为新对象