我有一个扑克程序,在该程序中,我有一个方法检查数组中是否有四种。
public boolean isFourOfAKind(Card[] arr){}
我通过抓取每张纸牌值2-14将arr []更改为一个int数组,并将它们存储在单独的数组中。如何检查(有效)该数组中是否有4个整数相同?
*注意:我要传递7张卡片的阵列
我的两对方法(来自请求)
/*
* Returns 0 if no two pairs
* else returns the highest card out of the two pairs,
* if two hands have the same highest pair then further inspection is needed
*/
public static int isTwoPair(Card[] arr){
int hold[] = new int[5];
int values[] = new int[arr.length];
int max = 0;
boolean total = false;
for(int i=0;i<arr.length;i++){
values[i] = arr[i].getValue();
}
for(int i = 0;i<values.length;i++){
for(int j = 0;j<values.length;j++){
if(i==j){
continue;
}
if(values[i]==values[j]){
if(values[i]>max){
max = values[i];
}
int hold1 =0;
int hold2=0;
hold1 = j;
hold2=i;
int counter = 0;
for(int ii = 0;ii<values.length;ii++){
if(ii==j||ii==i){
continue;
}
hold[counter] = values[ii];
counter++;
}
// for(int iii: hold){
// System.out.print(" , "+ iii);
// }
// System.out.println();
if(isPair(hold)==0){
max = 0;
total = false;
}else{
int holdInt = isPair(hold);
if(holdInt>max){
max = holdInt;
}
total = true;
}
}
}
}
return max;
}
[Straight flush
(递增等级,并结合Flush
检查]
Four of a kind
(相同等级的4被分组在一起)] >>Full house
(前两个相等,后两个相等,中间等于其中一个)Straight
(递增等级)Three of a kind
(同一级别的3个分组)Two pair
(两组相同等级的人)One pair
(同一级别的2个分组在一起)High card
(最后一张卡)Flush
,并且检查不需要任何排序,因此这不是问题。