我正在玩扑克游戏。到目前为止,我还停留在比较扑克手上。我对如何实现有一个想法,但是我不确定我的代码有什么问题。有人可以指出出什么问题吗?
因此,让我简要说明我的代码在做什么。
我程序的另一部分将遍历我手中的卡,并在数组中列出卡值的频率。
h = Hearts
c = Clubs
d = Diamonds
s = Spades
d4 = 4 of Diamond
因此,我手里有c3,h4,d4,s4、2d我将调用程序的另一部分,以读取手中的卡并返回一个计数板。上面我的手的计数板块将为[0,0,1,1,1,3,0,0,0,0,0,0,0,0,0,0]有一个1、2、3和3个4。
现在是我尝试查找一种三的方法,如果满员,它应该返回false(这是一种三加一对)
public boolean hasThreeOfAKind() {
int [] temp;
temp = this.getCounts();
for (int i = 0; i< temp.length; i++){
if (temp [i] == 3 ){
for (int j = 0; j < temp.length ; j++)
if ( temp [j] != 2){
return true;
}
}
}return false;
因此,我在上面尝试做的事情是首先运行数组,如果有,则运行3。如果有3,则再次运行数组,并查看是否存在2。不是2,那么我知道这是3。如果有2,则表示已满员,我应该返回false。我认为我的逻辑是正确的,但是我的代码有问题。
而我遇到麻烦的另一只手是如何确定我的手是否有一对。如果只有一对,则仅返回true。如果有两对,则返回false。
public boolean hasOnePair() { int [] temp; temp = this.getCounts(); for (int i = 0; i< temp.length; i++){ if (temp [i] == 2 ){ return true; } }return false;
为此,我正在考虑按降序或升序对数组中的值进行排序。如果选择降序,则首先读取数组,看是否有2,然后可以扫描下一个,并查看前2个后的下一个值是否也是2。如果还有2,则它会返回false。
有人可以看看我的代码并指出出什么问题吗?非常感谢你。
我正在玩扑克游戏。到目前为止,我还停留在比较扑克手上。我对如何实现有一个想法,但是我不确定我的代码有什么问题。有人可以指出是什么...
在hasThreeOfAKind()
中,您遇到以下错误:
您为什么要使用这样的低级基元?您没有使用完整的Card类是有原因的吗?您的代码会简单得多。
在您的threeOfAKind方法中,除非存储在数组中的第一个数字为2,否则第二个for循环将只执行一次,它应该看起来像这样:
寻找每个相似卡的数量并排列。 SO卡{1,1,2,2,2,5,7}(现在暂时忽略西服)将映射到(3,2,1,1),即满屋子您可以轻松检查第二个阵列
我正在为儿子上大学的Java课程(我曾经教过的课程)解决类似的问题,这是我的建议。