我正在做一个扑克游戏。到目前为止,我一直在比较扑克牌。我对如何做到这一点有一个想法,但我不确定我的代码有什么问题。有人可以指出什么问题吗?
所以让我简要描述一下我的代码在做什么。
我程序的另一部分将遍历我手中的牌,并在一个数组中列出一张牌值的频率。
h = Hearts
c = Clubs
d = Diamonds
s = Spades
d4 = 4 of Diamond
因此,假设我手中有 c3、h4、d4、s4、2d,我将调用程序的另一部分来读取我手中的牌并返回一个计数数组。上面我手的计数数组将是 [0,0,1,1,3,0,0,0,0,0,0,0,0,0] 所以这个数组的意思是我的手有一个 2、一个 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,然后我知道它是三个的一种。如果有一个 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,那么它将返回错误。
有人可以看看我的代码并指出问题所在吗?非常感谢。