首页 > 解决方案 > 百家乐游戏中的错误附加值

问题描述

我目前正在尝试编写一个基本的百家乐游戏,但是当我尝试将玩家牌的价值相加时,我得到了随机数。代码应该取其所有卡片整数的值,将它们加在一起,然后取数字的个位。

这是我获取和添加数字值的代码:


public void TakeACard(String c) {
    char number;
    String temp;
    allCard = allCard+c+" ";

    if (c.charAt(0)=='J' || c.charAt(0)=='Q' || c.charAt(0)=='K') {
        value = 0;
    } else if (c.charAt(0)=='A') {
        value = 1;
    } else {
        number = c.charAt(0);
        value = Integer.parseInt(String.valueOf(number));
    }

    hand[numCards] = value;
    numCards++;
}

public void GetTotalValue(){

    for (int i = 0; i<numCards; i++){
        value = hand[i];
        total += value;
    }

    int finalValue = total%10;

    System.out.print("Your hand value is: "+ finalValue);
}

这是我得到的示例输出:

你的牌是:2、6。你的手牌价值是:8

单击 1 获取您的卡片,然后单击其他任何内容以停止选择 1

你的牌是:2、6、A。你的手牌价值是:7

单击 1 获取您的卡片,然后单击其他任何内容以停止选择 1

你的牌是:2、6、A、5。你的手牌价值是:1

有没有人知道为什么他们没有正确地加在一起以及我该如何解决?

标签: java

解决方案


您没有重置总计。这是一个将不断增长和增长的类变量。正在发生的事情完全是意料之中的。让我们来看看:

2 + 6 = 8(总计)--> 8 % 10 = 8

8(当前总数)+ 2 + 6 + 1 = 17 --> 17 % 10 = 7

17(当前总数)+ 2 + 6 + 1 + 5 = 31 --> 31 % 10 = 1

以下是您纠正它的方法:

public void GetTotalValue(){
    total = 0; // <---- ADD THIS RESET

    for (int i = 0; i<numCards; i++){
        value = hand[i];
        total += value;
    }

    int finalValue = total%10;

    System.out.print("Your hand value is: "+ finalValue);
}

只是一件小事,Get...当它返回时不要命名你的函数void。要么返回一些东西,要么把函数重命名为别的东西。如果您不遵循任何命名约定,则更难维护您的代码。


推荐阅读