You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BlackJack程序开发:字符串类型卡牌的数值计算与爆牌判断问题

解决BlackJack手牌数值校验的字符串转数值问题

嘿,这个问题我在开发BlackJack程序的时候也踩过坑!核心问题就是你用字符串存储卡牌,直接用+运算符只会做字符串拼接,根本没法得到数值总和对吧?别担心,这里有几个实用的解决方案:

方法一:写一个卡牌字符串转数值的工具函数

最直接的方式就是把每个卡牌字符串映射成对应的BlackJack数值,还要记得处理A的特殊规则(可以算1或11)。

先写一个转换函数:

private int getCardValue(String card) {
    switch(card) {
        case "A":
            // 先默认按11计算,后续再根据总和调整
            return 11;
        case "J":
        case "Q":
        case "K":
            return 10;
        default:
            // 数字牌直接转成整数
            return Integer.parseInt(card);
    }
}

然后遍历你的手牌数组,累加数值,同时处理A的调整逻辑:

// 假设playerHand是存储玩家手牌的字符串数组
int totalValue = 0;
int aceCount = 0;

for (String card : playerHand) {
    int value = getCardValue(card);
    if (value == 11) {
        aceCount++; // 记录A的数量
    }
    totalValue += value;
}

// 如果总和超过21,把A从11改成1,直到总和≤21或者没有A了
while (totalValue > 21 && aceCount > 0) {
    totalValue -= 10;
    aceCount--;
}

// 最后判断是否爆牌
if (totalValue > 21) {
    System.out.println("Bust!");
}

方法二:使用面向对象的Card类(更推荐)

如果你的程序后续还要扩展功能(比如显示卡牌花色、记录卡牌状态),不如直接定义一个Card类,把卡牌的面值和数值绑定在一起:

class Card {
    private String face; // 比如"A"、"10"、"J"
    private int value;

    public Card(String face, int value) {
        this.face = face;
        this.value = value;
    }

    public int getValue() {
        return value;
    }

    // 可以再加getFace()方法用于显示卡牌
}

这样你的手牌就可以用List<Card>来存储,计算总和的时候直接调用getValue():

List<Card> playerHand = new ArrayList<>();
// 发牌的时候直接添加Card对象,比如playerHand.add(new Card("A", 11));

int totalValue = 0;
int aceCount = 0;
for (Card card : playerHand) {
    int value = card.getValue();
    if (value == 11) {
        aceCount++;
    }
    totalValue += value;
}

// 同样处理A的调整逻辑
while (totalValue > 21 && aceCount > 0) {
    totalValue -= 10;
    aceCount--;
}

if (totalValue > 21) {
    System.out.println("Bust!");
}

为什么你的原代码不行?

你之前写的pCard1+pCard2+pCard3,因为变量是字符串类型,所以+会执行字符串拼接操作,比如"10"+"J"+"5"会变成"10J5",这显然不是你想要的数值总和,所以必须先把每个字符串转成对应的整数再相加。

内容的提问来源于stack exchange,提问作者PizzaParrot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:31:09