【发布时间】:2021-12-31 11:43:35
【问题描述】:
扑克游戏中的练习:
我创建了一个包含 7 张卡片的初始对象数组。每张牌都由其价值(7、8、9、10、杰克...)和花色(梅花、菱形...)指定。
我创建了第二个数组来计算相同值的卡片的数量。例如,如果我有三张价值 7 的卡片,那么在我的第二张表中,价值 3 的整数将适合价值 7 的卡片。
我的问题:
在第三个数组Card[] cards = new Card[5] 中,如何将这 3 张价值为 7 的卡片复制到这张卡片的开头?我不是在寻找解决方案,而是在寻找一个想法。
第一个数组:
Card[] sevencards = new Card[7];
以下方法统计相同数值的牌张数:
private int[] nbCardsvalue(Card[] sevencards){
int[] nbvalue = new int[13];
for (int i = 0; i < sevencards).length; i++){
if (sevencards[i].getValue() == 2){
nbvalue [0]++;
}else if (sevencards[i].getValue() == 3){
nbvalue [1]++;
}else if (sevencards[i].getValue() == 4){
nbvalue [2]++;
}else if (sevencards[i].getValue() == 5){
nbvalue [3]++;
}else if (sevencards[i].getValue() == 6){
nbvalue [4]++;
}else if (sevencards[i].getValue() == 7){
nbvalue [5]++;
}else if (sevencards[i].getValue() == 8){
nbvalue [6]++;
}else if (sevencards[i].getValue() == 9){
nbvalue [7]++;
}else if (sevencards[i].getValue() == 10){
nbvalue [8]++;
}else if (sevencards[i].getValue() == 11){
nbvalue [9]++;
}else if (sevencards[i].getValue() == 12){
nbvalue [10]++;
}else if (sevencards[i].getValue() == 13){
nbvalue [11]++;
}else if (sevencards[i].getValue() == 14){
nbvalue [12]++;
}else{
return nbvalue ;
}
}
return nbvalue ;
}
澄清一下:
- 我的第一个数组包含 7 张扑克牌,
- 我的第二个数组计算相同值的卡片的数量,
- 第三个数组,大小为 5,包含我第一个数组中最好的五张牌或能够比较扑克游戏玩家手牌强度的最佳组合。
例如:
如果在我的第一个数组 Sevencards[] 中,我有 3 张价值为 7 的卡片(即三张卡片)。
在我的第二个数组 nbvalue[] 中,我将有 nbvalue[5] = 3,这表明我有 3 张价值为 7 的卡片。
我需要第三个数组(例如 Main[]),我将在其中放置我的组合,即三种。我在这个数组开头的三个 7。
我不知道如何获得这 3 张价值为 7 的卡片并将它们放入我的 Main[] 数组中。
这是我的班级卡片:
public class Card implements Comparable<Card>{
private final Suit suit
public final int Jack = 11;
public final int Queen = 12;
public final int King = 13;
public final int Ace = 14;
private final int value;
public Card (Suit s, int v){
this.suit = s;
this.value = v;
}
public Couleur getSuit(){
return suit
}
public int getValue(){
return value;
}
public String toString(){
String v = String.valueOf(value);
String s = suit.toString();
if (value >= 2 && value <= 10){
return v + " de " + s;
}else if (value == 11){
return "Jack of " + s;
}else if (value == 12){
return "Queen of " + s;
}else if (value == 13){
return "King of " + s;
}else if (value == 14){
return "Ace of " + s;
}
return null;
}
public int compareTo(Card c2){
if (this.value > c2.value){
return 1;
}else if (this.value < c2.value){
return -1;
}else {
return 0;
}
}
}
【问题讨论】:
-
请注意所有 if 的逻辑
nbvalue[sevencards[i].getValue() - 2]++,只需使用一个 if 来验证值在 2 到 14 之间,然后应用它。它会简化代码 -
感谢您的提示 ;-)