java - 百家乐游戏中的错误附加值
问题描述
我目前正在尝试编写一个基本的百家乐游戏,但是当我尝试将玩家牌的价值相加时,我得到了随机数。代码应该取其所有卡片整数的值,将它们加在一起,然后取数字的个位。
这是我获取和添加数字值的代码:
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
有没有人知道为什么他们没有正确地加在一起以及我该如何解决?
解决方案
您没有重置总计。这是一个将不断增长和增长的类变量。正在发生的事情完全是意料之中的。让我们来看看:
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
。要么返回一些东西,要么把函数重命名为别的东西。如果您不遵循任何命名约定,则更难维护您的代码。
推荐阅读
- css - Angular Ngx图表不增加宽度
- hibernate - 双向多对一,表之间没有 FK
- r - 如何使用 grep 进行过滤
- selenium-webdriver - 在 selenium web 驱动程序中处理下拉菜单
- java - java泛型代码是否在运行时为每种使用的类型复制或java使用类型转换?
- python - 以最佳方式基于变量的条件语句
- c - 在一个简单的选择游戏中,我如何将选项限制在一个列表中?
- python - 我可以使用列表推导来创建列表列表吗?
- c++ - 使用 C++ 进行 DLL 注入
- linux - 为什么 echo `echo -e "abc\nabc"` 给我“abc abc”?